黑马程序员技术交流社区
标题:
定义带有泛型的集合后,再反射集合!
[打印本页]
作者:
16463535
时间:
2013-4-13 12:50
标题:
定义带有泛型的集合后,再反射集合!
本帖最后由 16463535 于 2013-4-14 08:55 编辑
定义两个list集合后,给这两个list分别加上 泛型,其中一个是<String>另一个是<Integer>。然后通过反射技术得到两个list的字节码后比较两个集合对象是属于同一份字节码文件。那么泛型是在程序编译时检查的,假如通过反射技术对集合进行 增删改查 操作就可以冲破编译时的泛型约定。程序依然存在危险,并没有真正意义上的解决程序的安全问题,我这样理解对吗?
作者:
王洪宇
时间:
2013-4-13 16:55
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) throws Exception{
List<String> sList = new ArrayList<String>();
List<Integer> iList = new ArrayList<Integer>();
Class sClass = sList.getClass();
Class iClass = iList.getClass();
System.out.println(sClass==iClass);//打印:true
Method sAdd = sClass.getMethod("add",Object.class);
sAdd.invoke(sList,new Integer(12));//能添加成功
System.out.println(sList);//打印:[12]
}
}
复制代码
不知道你说的是不是这种方式,但测试结果跟你说的一样。
可能你说的对吧,反射有不安全的一面。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2