关于Java泛型的理解

 
 
/*     
* 项目名称:定义一个泛型数组类,并创建数组类的对象   
* 类名称:理解泛型   
* 类描述:   
* 创建人:柯盛  
* 创建时间:2019年8月6日 下午10:46:08   
* @version
* @其他:
*/

/*泛型是通用类型的类,泛型对象可以表示多种不同的类的对象;采用泛型类,就可以将行为(封装方式)相同,但属性的类型(数据类型)不同的多个类用一个泛型类表示*/
class GenericArray<T> //定义泛型类,类型参数名T; { int n; //数组的总长度 int total; //数组的实际长度 private Object arr[]; public GenericArray(int n) { this.n = n; total = 0; arr = new Object[n]; } public void add(T obj) //将一个T型对象加入到数组中 { arr[total++] = obj; } public T indexOf(int i) //获得第i个元素,返回值类型是T型 { return (T)arr[i]; //返回前强制转换成T型 } public int length() { return total; } } public class 理解泛型 { public static void main(String args[]) { int i; String str[] = new String[2]; //定义一个String类的对象数组 str[0] = "Beijing"; str[1] = "Shanghai"; GenericArray<String> arrObj1 = new GenericArray<String>(10); //创建一个泛型类对象,所有元素均为string类型 for(i=0;i<str.length;i++) //将每个元素加到数组对象中 { arrObj1.add(str[i]); } for(i=0;i<arrObj1.length();i++) { System.out.println(arrObj1.indexOf(i)); } //------------------------------------------------------- System.out.println("--------------------------------------"); Integer intObj[] = new Integer[2]; intObj[0] = 123; intObj[1] = -456; GenericArray<Integer> arrObj2 = new GenericArray<Integer>(10); //创建一个泛型类对象,所有元素均为Integer类型 for(i=0;i<intObj.length;i++) //将每个元素加到数组对象中 { arrObj2.add(intObj[i]); } for(i=0;i<arrObj2.length();i++) { System.out.println(arrObj2.indexOf(i).intValue()); } //------------------------------------------------------- System.out.println("--------------------------------------"); Object obj[] = new Object[2]; obj[0] = "Beijing"; obj[1] = -123; GenericArray<String> arrObj3 = new GenericArray<String>(10); //创建一个泛型类对象,所有元素均为String类型 arrObj3.add("Beijing"); //泛型对象arrObj3只能加String型对象,下面语句编译不能通过 //arrObj3.add(-123); for(i=0;i<arrObj3.length();i++) { System.out.println(arrObj3.indexOf(i)); } } }
 
  
 
 

猜你喜欢

转载自www.cnblogs.com/kesheng/p/12367328.html