加强学习2

36-37课:泛型

泛型是提供给Javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合时会去除掉“类型”信息,使程序运行效率不受影响,对于参数化的泛型类型,getclass()方法的返回值和原始数据一样。由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就可以往某个泛型集合中加入其它的数据,例如,用反射得到集合,再调用其add()方法即可

 

使用泛型集合,可以将一个集合中的元素限定为一个特定类型,集合中只能存取同一个类型的对象,这样更安全,编译器也可以知道这个对象的概念,不需要对对象进行强制类型转化,这样更方便。

 

参数化类型与原始类型的兼容性:

1】  参数化类型可以引用一个原始数据的类型

Collection<String> c=new Vector();

2】  原始数据可以引用一个参数化数据类型的对象;

Collection c=new Vector<String>

参数实例化不考虑类型参数的继承关系

Vector <String> v=new Vertor<Object>  //错误

Vector <Object> v=new Vertor<String>  //错误

3】  在创建数组实例时,数组的元素不能使用参数化的类型。

Vector<Integer> vectorlist[]=new Vector<Integer>[10]; //错误

 

import

java.util.ArrayList; 

GenericTest { 

/**     

*@throwsNoSuchMethodException

*@throwsInvocationTargetException

*@throwsIllegalAccessException

*@throwsSecurityException

*@throwsIllegalArgumentException

*/    main(String[] args) IllegalArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { 

        ArrayList<String> collection2= ArrayList<String>();        collection2.add();                             ArrayList<Integer> collection3= ArrayList<Integer>();        collection3.add(23); 

"add"class"sdfesdf"

out

out

}publicstaticvoid

out

for

out

 

 

 

39、泛型集合的综合应用案例

 

        HashMap<String,Integer> maps = HashMap();        maps.put(, 32);        maps.put(, 29);        maps.put(, 41);               Set<Map.Entry<String,Integer>> entrySet=maps.entrySet();               (Map.Entry<String,Integer> entry:entrySet){                       System..println(entry.getKey()++entry.getValue());           }           }

 

[] str6= String[]{,,,};        swap(str6,1,2);        (String str:str6){           System..println(str);       }

        GenericDao<Point> dao= GenericDao<Point> ();               dao.add( Point(4,6));              Point s= dao.findById(1);      

当一个变量被声明为泛型时,只能被实例变量和方法调用(还有内嵌变量),而不能被静态变量和静态方法调用。静态方法不应该有类级别的类型参数。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值