java泛型list赋值_JAVA反射机制--怎么不受泛型束缚给数组赋
值
在Java中,声明数组的时候我们经常会写泛型限制⽤户输⼊或者获取的数据。如:ArrayList list = new ArrayList<>();
String就是泛型。当我们调⽤
list.add();⽅法的时候,如果输⼊整型数据,编译就会报错。
当我们引⽤其他⼤⽜写的第三⽅Jar包,有时候和包中定义的数据类型不⼀样,这个时候就要⽤java的反射机制跳过编译阶段。
ArrayList list = new ArrayList<>();
ArrayList listStr = new ArrayList<>();
list.add("obj");
listStr.add("str");//获得ArrayList的类类型
Class c1 = Class();
Class c2= Class();
//反射操作都是编译之后的操作
System.out.println(c1==c2);
//返回true.Java中限制输⼊的泛型只在编译时有效*Java反射机制可以⽆视泛型的原因就是因为泛型只在编译时⽣效
然后我们就可以通过获取类中的add⽅法(Method method = c2.getMethod("add", Object.class);)向list中插⼊值.在上⾯我们定义的泛型是String类型,但是在这我们插⼊
20依旧会添加到listStr中。
Method method = c2.getMethod("add", Object.class);
Object obj = method.invoke(listStr, 20);
System.out.println(listStr.size());关于class中⽅法的参数以及怎么通过Method()获得不同类中
的⽅法在javaapi中都可以查看,在我的源码中也都有实例。
实例CODE:怎么给数组赋值
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论