泛型
泛型类
对象实例化时如果不指定泛型,也会默认指定为object
泛型不同的引用不能相互赋值
泛型接口
未传入泛型实参时,与泛型类的定义相同,在声明类的时候,需将泛型的声明也一起加到类中,如不声明泛型,编译器会报错:“Unknown class”未知类
如果实现接口时指定接口的泛型的具体数据类型,这个类实现接口所有方法的位置都要泛型替换实际的具体数据类型
泛型方法
方法也可以被泛型化,不管此时定义在其中的类是不是泛型化的,在泛型方法中可以定义泛型参数,此时,参数的类型就是传入数据的类型
在定义泛型类时,可以声明多个类型,复数类型代表可能被定义的类型这样在实例化指定类型时就可以指定多个类型
定义泛型类时也可以声明数组类型,但不可以使用泛型来建立数组的实例
package JavaSE.Generics;
public class cc <Q>{
private Q q;
public <T> T test(T aa) {
//无返回值的泛型方法
System.out.println(this.q);//在类上定义的泛型可以在普通的方法中使用
return aa;
}
public static <T>T test1(T s){
//System.out.println(this.q);
//在静态方法中不能使用类定义泛型,如果要使用泛型,只能使用静态方法自己定义的泛型
//有返回值的泛型方法,静态方法的泛型方法
return s;
}
public <T> T[] test2(T...a){
for (T T:a
) {
//形参为可变参数的泛型方法
}return a;
}
}
package JavaSE.Generics;
public class test {
public static void main(String[] args) {
cc<Object> objectcc = new cc<>();
//泛型方法在调用前没有固定的数据类型
//在调用时传入的参数是什么类型,就会把泛型改成什么类型
Boolean i=objectcc.test(false);//传入的参数是boolean类型,泛型就固定成boolean类型,返回值也是boolean
Integer j=objectcc.test1(2);
}
}