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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 柏涛 中级黑马   /  2014-2-9 18:46  /  1047 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 柏涛 于 2014-2-9 20:51 编辑

为什么下面的结果一个为真,一个为假?

public class Demo23 {
public static void main(String[] args) {
ArrayList<Integer> collection2 = new ArrayList<Integer>();   
//System.out.println(collection1.getClass()==collection2.getClass());   
collection2.add(“真暴力”);   
collection2.getClass().getMethod("add", Object.class).invoke(collection2, "真暴力");   
System.out.println(collection2.get(0));

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

5 个回复

倒序浏览
collection1在哪里?木有看到啊!
回复 使用道具 举报
itpower 发表于 2014-2-9 19:01
collection1在哪里?木有看到啊!

collection1那句话忘记注释掉了   不影响做题的
回复 使用道具 举报
这个是暴力反射吧,突破编译器的类型限定 ,什么一个为真一个为假啊?我表示没看懂楼主的意思啊
回复 使用道具 举报
问题不明确啊,还有泛型使用有误吧,Integer里不能放字符串吧~
回复 使用道具 举报
public class Demo23 {

public static void main(String[] args) {
ArrayList<Integer> collection2 = new ArrayList<Integer>();   
//System.out.println(collection1.getClass()==collection2.getClass());   
collection2.add(“真暴力”);
/类对象获取class字节码   collection2.getClass().是获取一个class对象 获取add方法  
//Object.class被泛型限定Integer类
//调用invoke方法应是Method 类  这样写很模糊  因为有可能中间涉及类型强转  
collection2.getClass().getMethod("add", Object.class).invoke(collection2, "真暴力");  
//假暴力?
System.out.println(collection2.get(0));

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

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