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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 为你而去 中级黑马   /  2014-4-9 10:14  /  757 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如果已经定义了一个带泛型的集合 ArrayList<String> list=new ArrayList<String>,那么可以添加一个Integer的元素进去吗?如果可以,请说出怎么实现?
这个我记得反射可以实现,但忘了,求大神指导

4 个回复

倒序浏览
反射可以实现
回复 使用道具 举报
public class Test6 {
        public static void main(String [] args) throws Exception{
                ArrayList<String> al = new ArrayList<String>();
                ArrayList<Object> al2 = al.getClass().getConstructor().newInstance();
                al2.add(new Integer(129));
                System.out.println(al2);
               
        }
                                                
}
得到字节码,然后得到字节码里面的构造方法,新建一个ArrayList对象al2就可以了
回复 使用道具 举报
  1. package heima.demo;

  2. import java.lang.reflect.Method;
  3. import java.util.ArrayList;
  4. import java.util.List;


  5. public class ReflexDemo {

  6.         public static void main(String[] args) throws Exception {
  7.                 List<String> list = new ArrayList<String>();
  8.                
  9.                 Method method = list.getClass().getMethod("add", Object.class);
  10.                
  11.                 method.invoke(list, 1);
  12.                
  13.                 System.out.println(list);
  14.         }

  15. }
复制代码


通过List的字节码文件获取add方法,设置传入参数类型为Object类型就可以了
回复 使用道具 举报
这个。。。。可以吗=_=
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马