泛型
*泛型的介绍:(泛型就是接受数据类型的类型)
1,泛型又称参数化类型,解决数据类型的安全问题。
2,在类声明或实例化时只要指定好需要的具体的类型即可。
3,泛型的作用:可以在类声明时通过一个标识表示类中某个属性的类型,或者是某个方法的返回值类型,或者是参数类型。
class Person<E>{
E s;
public Person(E s){
this.s=s;
}
public E getS(){
return s;
}
}
E具体的数据类型在定义类对象的时候指定,即在编译期间就确定E是什么类型 。
*泛型的细节:
1,给泛型指定数据类型时,要求是引用类型,不能是基本数据类型
2,在给泛型指定具体类型后,可以传入该类型或者该类型的子类类型
3,默认泛型类型是object
*自定义泛型:
*自定义泛型类:
*基本语法:
class 类名
*细节:
1,普通成员可以使用泛型(属性,方法)
2,使用泛型的数组,不能进行初始化
3,静态方法中不能使用类的泛型
4,泛型类的类型,是在创建对象时确定的(因为在创建类的对象时,需要指定确定类型)
5,如果在创建对象时,没有指定类型,默认为Object
*自定义泛型接口:
*基本语法:
interface 接口名
*细节
1,接口中,静态成员也不能使用泛型,
2,泛型接口的类型,在继承接口或实现接口时确定
3,没有指定类型,默认为Object
*自定义泛型方法:
*基本语法:
修饰符
*细节:
1,泛型方法,可以定在普通类中,也可以定义在泛型类中
2,当泛型方法被调用时,类型会确定
3,public void eat(E e){},修饰符后没有
*泛型的继承和通配符:
1,泛型不具有继承性:List
2,<?>:支持任意泛型类型
3,<? extends A>:支持A类以及A类的子类,规定了泛型的上限
4,<? super A>:支持A类以及A类的父类,规定了泛型的下限