A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© javamov 中级黑马   /  2013-8-18 19:09  /  502 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    一般的类和方法,只能使用具体的类型:要么是基本类型,要么是自定义的类。
如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。
ArrayList  collection1=new ArrayList();
ArrayList<String> collection2=new ArrayLIst();
这就是java泛型的核心概念:告诉编译器想使用什么类型,然后译器帮你处理一切细节。
====================================================================
Arr1和arr2 编译完以后 ,编译器编译带类型说明的集合时会去掉
“类型”信息,使程序运行效率不受影响,对于参数化的泛型类型,
getClass()方法的返回值和原始类型完全一样。
ArrayList<Integer> arr1=new ArrayList<Integer>();
ArrayList<String>  arr2=new ArrayList<String>();
System.out.println(arr1.getClass()==arr2.getClass());
true
====================================================================
泛型是给编译器看的,我也可以穿过编译器。(例如:)       
ArrayList<Integer> arr=new ArrayList<Integer>();
               
arr.getClass().getMethod("add", Object.class).invoke(arr, "123");
               
System.out.println(arr.get(0));
123
====================================================================



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马