黑马程序员技术交流社区
标题:
求此题解法,没思路
[打印本页]
作者:
xwh1230
时间:
2014-7-27 22:28
标题:
求此题解法,没思路
ArrayList<Integer> list = new ArrayList<Integer>(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象
作者:
fantacyleo
时间:
2014-7-27 22:37
反射。。。
作者:
赵顺超
时间:
2014-7-27 22:40
在编译时期需要写泛型,但是java中泛型会在运行时期去掉,产生的class类与泛型无关,所以,你用反射添加String元素即可
作者:
xwh1230
时间:
2014-7-27 22:55
赵顺超 发表于 2014-7-27 22:40
在编译时期需要写泛型,但是java中泛型会在运行时期去掉,产生的class类与泛型无关,所以,你用反射添加Str ...
泛型没理解好啊,理解有点难度
作者:
你好吗
时间:
2014-7-27 23:36
还没学到反射的飘过
作者:
裤裆里的温柔、
时间:
2014-7-28 00:33
这道题太简单了,一行代码。list.getClass().getMethod("add",Object.class).invoke(list, "你想在这里写什么?");
作者:
java—family
时间:
2014-7-28 01:02
package cn.itcast.collection;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
//在这个泛型为Integer的ArrayList中存放一个String类型的对象。
public class reflectDemo {
//思路: 用反射跳过泛型,调用 ArrayList类中的add方法添加string
public static void main(String[] args) throws SecurityException, NoSuchMethodException, Exception, IllegalAccessException, InvocationTargetException {
ArrayList<Integer> al = new ArrayList<Integer>();
String str = "旺财";
Method m = al.getClass().getMethod("add", Object.class);// 得到add方法对象
m.invoke(al, str);
for(int x=0;x<al.size();x++){
System.out.println(al.get(x));
}
}
}这道题很简单的,首先要知道泛型技术是编译时期的技术,在编译通过后,生成的类文件里面没有泛型的。 我们跳过编译,用反射调用生成的类文件,中的方法,用里面的方法添加string类型的就ok了。这样就跳过泛型了。
就两个知识点:反型 + 反射
作者:
M单色调
时间:
2014-7-28 05:26
路过看看!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2