首页 > 编程语言 > 详细

【java】泛型的作用是在编译阶段防止错误输入,绕过编译就绕过泛型,可用反射验证

时间:2017-03-22 23:06:19      阅读:188      评论:0      收藏:0      [点我收藏+]
技术分享
 1 package com.tn.collect;
 2 
 3 import java.lang.reflect.Method;
 4 import java.util.ArrayList;
 5 
 6 public class Fanxin {
 7     public static void main(String[] args){
 8         //泛型的作用是在编译阶段防止错误输入,绕过编译就绕过了泛型
 9         //反射都是绕过编译操作
10         ArrayList<String> str=new ArrayList<String>();
11         str.add("你好!");
12         ArrayList str2=new ArrayList();
13         
14         //结果是true说明类类型是一样的,编译后是去泛型化的
15         System.out.println(str.getClass()==str2.getClass());
16         System.out.println(str.getClass()==ArrayList.class);
17         
18         //用add方法的反射
19         try{
20             Method method=str.getClass().getMethod("add", new Class[]{Object.class});
21             method.invoke(str, new Object[]{100});
22         }catch(Exception e){
23             e.printStackTrace();
24         }
25         
26         System.out.println(str.size());
27         System.out.println(str);
28         
29         for(String s:str){
30             System.out.println(s);
31         }
32     }
33 }
View Code

运行结果:

true
true
2
[你好!, 100]
你好!
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at com.tn.collect.Fanxin.main(Fanxin.java:29)

【java】泛型的作用是在编译阶段防止错误输入,绕过编译就绕过泛型,可用反射验证

原文:http://www.cnblogs.com/xiongjiawei/p/6602380.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!