本帖最后由 彭坤 于 2012-2-18 14:44 编辑
基础加强37中张老师用代码演示了运用反射往intList里插入String类型的对象,顺手在下面加了一段代码测试运用反射往strList里插入Integer类型的对象,但是报错了
贴上来跟大伙研究研究原因。
- import java.util.ArrayList;
- import java.util.List;
- public class GenericTest {
- public static void main(String[] args) throws Exception {
- List<Integer> intList = new ArrayList<Integer>();
- List<String> strList = new ArrayList<String>();
- System.out.println(intList.getClass() == strList.getClass());
- //运用反射往intList里插入String类型的对象
- intList.getClass().getMethod("add", Object.class).invoke(intList, new String("abcd"));
- System.out.println(intList.get(0));
- //运用反射往strList里插入Integer类型的对象
- strList.getClass().getMethod("add", Object.class).invoke(strList, new Integer(2));
- System.out.println(strList.get(0));
- }
- }
- -------------运行结果--------------
- true
- abcd
- Exception in thread "main" java.lang.ClassCastException: java.lang.Integer
- at GenericTest.main(GenericTest.java:17)
复制代码 添加了如下代码做测试
strList.isEmpty();//返回false;
strList.size();//返回1
说明是已经把值插入进去了,不是在插入的时候报错。
而是在取值的时候类型转换出错了,OMG,粗心啊粗心。问题已解决,谢谢围观,mua~ |