A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 16463535 中级黑马   /  2013-4-13 12:50  /  1010 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 16463535 于 2013-4-14 08:55 编辑

定义两个list集合后,给这两个list分别加上 泛型,其中一个是<String>另一个是<Integer>。然后通过反射技术得到两个list的字节码后比较两个集合对象是属于同一份字节码文件。那么泛型是在程序编译时检查的,假如通过反射技术对集合进行 增删改查 操作就可以冲破编译时的泛型约定。程序依然存在危险,并没有真正意义上的解决程序的安全问题,我这样理解对吗?

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

1 个回复

倒序浏览
  1. import java.lang.reflect.Method;
  2. import java.util.ArrayList;
  3. import java.util.List;

  4. public class Test {
  5.         public static void main(String[] args) throws Exception{
  6.                 List<String> sList = new ArrayList<String>();
  7.                 List<Integer> iList = new ArrayList<Integer>();
  8.                
  9.                 Class sClass = sList.getClass();
  10.                 Class iClass = iList.getClass();
  11.                
  12.                 System.out.println(sClass==iClass);//打印:true
  13.                
  14.                 Method sAdd = sClass.getMethod("add",Object.class);
  15.                 sAdd.invoke(sList,new Integer(12));//能添加成功
  16.                
  17.                 System.out.println(sList);//打印:[12]
  18.        
  19.         }
  20. }
复制代码
不知道你说的是不是这种方式,但测试结果跟你说的一样。
可能你说的对吧,反射有不安全的一面。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马