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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于汝国 黑马帝   /  2011-12-25 11:55  /  2170 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 于汝国 于 2011-12-29 16:01 编辑

List<Integer> lists = new ArrayList<Integer>();
String str = "abc";
怎么将str加入到lists中

5 个回复

倒序浏览
本帖最后由 袁泽宇 于 2011-12-25 12:06 编辑

不知道{:soso_e141:}
回复 使用道具 举报
      public static void main(String[] args) throws Exception {
               
                      List<Integer> list=new ArrayList<Integer>();
                      String str="abc";
                      list.getClass().getMethod("add", Object.class).invoke(list, str);
                     }
由于编译器生成的字节码会去掉泛型的类型信息,
所以可以用反射跳过编译器直接调用其add方法

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

回复 使用道具 举报
编译器生成的字节码会去掉泛型的类型信息,如上正解,需要用到反射得知识。呵呵。
回复 使用道具 举报
哈哈     老兄 我建议你去看看  张孝祥老师 Java 基础加强部分的 第37讲! 讲解的很清楚!
ArrarList<Integer> collection3 = new ArrayList<Integer>();
collection3.getClass().getMethod("add",Object.class).invoke(collection3,"abc");
因为泛型是给编译器看的,

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

回复 使用道具 举报
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

public class ChangeType{
                public static void main(String[] args){
                        List<Integer> list = new ArrayList<Integer>();               
                        //list.add(12);
                        String str = "abcd";
                        //list.add(str);
                        new ChangeType().addStrToIntegerList(list, str);
                        System.out.println(list);
                }
                public void addStrToIntegerList(List<Integer> list,String str){
                        try {
                               
                                //通过反射的到List的add()反射的方法
                               
                                Method method = list.getClass().getDeclaredMethod("add",Object.class);
                                method.invoke(list, str);
                        } catch (Exception e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                       
                }
}

评分

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

查看全部评分

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