标题: 如何将str="abc"存入到一个List<Integer> 中?带来的反射的一些... [打印本页] 作者: 胡建彪 时间: 2012-9-21 11:14 标题: 如何将str="abc"存入到一个List<Integer> 中?带来的反射的一些... // 如何将str="abc"存入到一个List<Integer> 中?
第一种方式:
class Person{}
public class ReflectDemo{
List<Integer> list = new ArrayList<Integer>();
String str3 ="abc";
list.getClass().getMethod("add",Object.class).invoke(list,str3) ;
//此处只能用Object.class,用Integer.class和String.class 都报错误。难道getMethod()这个方法接收的第二个参数不是方法的参数类型的字节码文件?
// 难道getMethod("add",Object.class)是说 反射拿得到的add 方法和 list api下面的add 方法不一样? 求大虾正解。
System.out.println("...."+list);
}
运行结果: ....[abc]
由于以上对Object.class 的思考,我把 List<Integer> list = new ArrayList<Integer>();的泛型换成任意类型。List<String> list = new ArrayList<String>(); List<Person> list = new ArrayList<Person>(); 运行结果依然是 [abc]. 这是不是说明用反射的方式在集合中添加元素时,可以忽略泛型对集合元素的限定?
第二种方式:
我想到另一种方式,可能不正确,求大虾们一起搞定它。
public class ReflectDemo1{
List<Integer> list = new ArrayList<Integer>();
String str3 ="abc";