本帖最后由 HM朱蛟 于 2013-5-28 11:49 编辑
老师的例子结果没问题:
package cn.itcast.day2;
import java.util.*;
public class GenericDemo {
/**
* @param args
*/
public static void main(String[] args)throws Exception {
ArrayList<Integer> collection = new ArrayList<Integer>();
//collection.add(1);//集合泛型限定是Integer然而我却想通过反射的方式给他add一个字符串
collection.getClass().getMethod("add", Object.class).invoke(collection,"abc");
collection.add(2);
System.out.println(collection.get(0)+" and "+collection.get(1));
}
}
输出结果:
abc and 2
我把泛型限定类型改了下,Integer改成String然后反射进一个Integer,同样的操作方式这里要抛出异常,类型转换失败。- import java.util.*;
- public class GenericDemo {
- /**
- * @param args
- */
- public static void main(String[] args)throws Exception {
- ArrayList<String> collection = new ArrayList<String>();
- //collection.add(1);//集合泛型限定是String然而我却想通过反射的方式给他add一个整数
- collection.getClass().getMethod("add", Object.class).invoke(collection,new Integer(1));
- //collection.add("abc");
- System.out.println(collection.get(0)+" and "+collection.get(1));
- }
- }
复制代码 运行结果:
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at cn.itcast.day2.GenericDemo.main(GenericDemo.java:16)
|
|