第一篇博客,java入门,关于java泛型数组简单探究的记录。
java中不允许建立泛型数组,但是可以通过类型转换实现这一功能。
如下面代码所示:
public class Test1{
public static void main(String[] args){
FanXing<Integer> s;
s=new FanXing<Integer>();
//s.a[1]=2; //此种赋值方法有误 [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
s.set(2,3,4); //赋值需要通过set方法
System.out.println(s.geta1());//输出需要get方法
//System.out.println(s.a[1]);//此种输出方法有误 [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
}
}
class FanXing<T>{
T[] a=(T[]) new Object[3];//此处创建泛型数组,需要先创建Object,然后向下类型转换为T[]
public void set(T aa,T bb,T cc){
a[0]=aa;
a[1]=bb;
a[2]=cc;
}
public T geta1(){
return a[1];
}
}
//程序输出:3
此外还有如下方式:
public class Test2{
public static void main(String[] args){
FanXing<Integer> s;
s=new FanXing<Integer>();
s.a[1]=2; //可以直接赋值
s.set(2,3,4); //也可通过set方法
System.out.println(s.geta1());//输出需要get方法
System.out.println(s.a[1]);//也可直接输出实例变量
}
}
class FanXing<T>{
Object[] a=(T[]) new Object[3];//此处直接创建Object数组,然后转换为T[]类型
public void set(T aa,T bb,T cc){
a[0]=aa;
a[1]=bb;
a[2]=cc;
}
public T geta1(){
return (T)a[1];//此处返回应该强制转换为T类型
}
}
/*程序输出:3
3
*/
第一种是算法(第四版中p84)提供的方法。
初学者的入门记录。