黑马程序员技术交流社区

标题: 怎样把字符串加到Integer类型的集合中? [打印本页]

作者: 于汝国    时间: 2011-12-25 11:55
标题: 怎样把字符串加到Integer类型的集合中?
本帖最后由 于汝国 于 2011-12-29 16:01 编辑

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

作者: 袁泽宇    时间: 2011-12-25 11:57
本帖最后由 袁泽宇 于 2011-12-25 12:06 编辑

不知道{:soso_e141:}
作者: 胡遇潮    时间: 2011-12-25 12:00
      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方法
作者: 颜宗茂    时间: 2011-12-25 22:34
编译器生成的字节码会去掉泛型的类型信息,如上正解,需要用到反射得知识。呵呵。
作者: 张绍成    时间: 2011-12-26 10:03
哈哈     老兄 我建议你去看看  张孝祥老师 Java 基础加强部分的 第37讲! 讲解的很清楚!
ArrarList<Integer> collection3 = new ArrayList<Integer>();
collection3.getClass().getMethod("add",Object.class).invoke(collection3,"abc");
因为泛型是给编译器看的,


作者: 1253431283    时间: 2011-12-26 20:50
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();
                        }
                       
                }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2