![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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 }
运行结果:
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)