本帖最后由 上官睿鹏 于 2014-3-21 22:07 编辑
import java.lang.reflect.*;
import java.util.ArrayList;
import java.util.List;
class Demo
{
public static void main(String[] args)throws Exception
{
List<Integer> list = new ArrayList<Integer>();
//list.add("abc");//编译器会报错,下面通过反射绕过编译器向里面添加String类型元素
list.getClass().getMethod("add", Object.class).invoke(list, "abc"); //通过反射向集合里添加String类型数据
System.out.println(list.get(0)); //这里可以顺利打印出字符串
}
}
但是下面这样就不行了,不知道是啥原。
import java.lang.reflect.*;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) throws Exception {
List<String> list = new ArrayList<String>();
//list.add(1);//编译器会报错,下面通过反射绕过编译器向里面添加Integer类型元素
list.getClass().getMethod("add", Object.class).invoke(list, 1); //通过反射向集合里添加Integer类型数据
System.out.println(list.size()); //到这里程序能够打印出结果为1
System.out.println(list.get(0)); //这句话就报错了(ClassCastException),按理应该不报啊,上面的程序都能打印出结果
}
}
|
|