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

© xgm 中级黑马   /  2016-3-17 19:53  /  480 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

* 目的:深入了解泛型
* 结论:
*     泛型是提供给javac编译器使用的,用来规定容器可以添加的参数类型。
* 但是编译器编译时会去除泛型(这也就是为什么可以通过反射跳过泛型添加其他属性的值)
*/
public class GenelicTest {

        public static void main(String[] args) throws Exception{
               
                List<String> list = new ArrayList<String>();
                List<Integer> list1 = new ArrayList<Integer>();
               
                System.out.println(list.getClass()==list.getClass());  //结果为true,也就是说他们是同属于一份字节码,字节码不存在泛型。
                //list.add(1);  //编译错误
                list.add("aa");
                list.add("bb");
               
                list.getClass().getMethod("add", Object.class).invoke(list, 1);  //通过反射跳过泛型添加其他类型的值
               
                for(Object val:list){
                        System.out.println(val);
                }
        }
}
您需要登录后才可以回帖 登录 | 加入黑马