public class Genericity<A> {
/*
关于为什么要使用泛型?
-有的时候不知道要用什么传入什么参数,同时又需要不断地进行父类子类的转化,太过于麻烦,所以有了这个东西
*/
A[] objects = (A[])new Object[30];//强制类型转换
//<A>可以是任意标识符,也可以定义多个泛型(键值对)
public void add(A obj){
//形参类型也是由外部定义的
}
public A get(){
//返回值也是由外部指定
return null;
}
public static void main(String[] args) {
//在存储方面有些优势,任何类型的数据都可以存储,但是缺点在于不好取出
//定义<A>之后,这里所有类型都可以通过A来替换
/*
在定义时,为类指定类型,在编译期间添加数据时进行类型的校验
-传参时只能用类来传递类型(integer),不能用基本数据类型(int)来传递
-泛型的类型参数可以有多个
-没有指定默认为object
*/
Genericity<String> genericity1=new Genericity<>();//变量类型由外部指定
genericity1.add("");
//返回值为String
genericity1.get();
//同理也可以使用Integer
Genericity<Integer> genericity2=new Genericity<>();
genericity2.add(213);//传入的实参类型需要与泛型的参数类型相同
//返回值为Integer
genericity2.get();
}
A name;
}
泛型实例
public class GenDemo<T> {
/*
当类型不确定的时候要将类型当作参数传入进去,方法就是通过泛型来传入参数
*/
T acc;
public T getAcc(){
return acc;
}
public void setAcc(T acc){
this.acc=acc;
}
public static void main(String[] args) {
GenDemo<String> genDemo=new GenDemo<>();
genDemo.setAcc("9jki7");
genDemo.getAcc();
}
}
派生子类
public class GenExends<T> extends GenDemo<T> {
/*
一个类型继承了一个泛型类,有两种实现方式:
-1.子类和父类都为泛型类,这样定义子类时传入类型,子类和父类中的类型一致
-2.子类不是泛型类,这时候父类的类型必须是确定的
*/
public static void main(String[] args) {
//GenExends sub =new GenExends();
GenExends<Integer> sub=new GenExends<>();
}
}