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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. public class Demo {

  2.         /**
  3.          * 3、 ArrayList<Integer> list = new ArrayList<Integer>();
  4.          * 在这个泛型为Integer的ArrayList中存放一个String类型的对象。
  5.          * @param args
  6.          */
  7.         private static ArrayList<Integer> list = new ArrayList<Integer>();
  8.         public static void main(String[] args) throws Exception  {
  9.                 // TODO Auto-generated method stub

  10.                 Class c=Test3.class;
  11.                 Field f=c.getDeclaredField("list");
  12.                 Class clazz=f.getType();
  13.                 Method method=clazz.getMethod("add", Object.class);
  14.                 method.invoke(list, "字符串");
  15.                 for(Object obj:list)
  16.                 {
  17.                         System.out.println(obj);
  18.                 }

  19.                
  20.         }
  21. }
复制代码
上述是使用反射完成的,不必去看,下面是正文:
  1. public class Demo {

  2.         /**
  3.          * 3、 ArrayList<Integer> list = new ArrayList<Integer>();
  4.          * 在这个泛型为Integer的ArrayList中存放一个String类型的对象。
  5.          * @param args
  6.          */
  7.        
  8.         public static void main(String[] args) throws Exception  {
  9.                 // TODO Auto-generated method stub
  10.                 ArrayList<Integer> list = new ArrayList<Integer>();
  11.                 //将该列表使用迭代器封装,迭代器是List特有的ListIterator
  12.                 ListIterator listit=list.listIterator();
  13.                 //使用迭代器ListIterator的add方法,存放字符串
  14.                 listit.add("字符串");
  15.                 //打印该字符串进行试验
  16.                 System.out.println(listit.previous().toString());
  17.                 System.out.println(list.get(0).toString());

  18.        

  19.                
  20.         }
  21. }
  22. /*
  23. * 最好两个打印语句,迭代器的强转可以,而通过get会抛出强转类型异常,当然迭代器
  24. * 可以不需要toString()就能打印出“字符串”。奇怪的是:为什么通过toString
  25. * 不能将元素转换为字符串。
  26. * */
复制代码
再比较下这个:如下
  1. public static void main(String[] args) throws Exception  {
  2.                 // TODO Auto-generated method stub
  3.                 ArrayList<Integer> list = new ArrayList<Integer>();
  4.                 list.add(3);
  5.                 //将该列表使用迭代器封装,迭代器是List特有的ListIterator
  6.                 //ListIterator listit=list.listIterator();
  7.                 //使用迭代器ListIterator的add方法,存放字符串
  8.         //        listit.add("字符串");
  9.                 //打印该字符串进行试验
  10.                 //System.out.println(listit.previous().toString());
  11.                 System.out.println(list.get(0).toString());

  12.        

  13.                
  14.         }
  15. }
复制代码
这个能通过,打印3:

我得出的结论,调用get()提取元素,再调用toString(),集合难道会先检查元素的类型是否属于泛型,才能调用toString()???




1 个回复

倒序浏览
{:3_47:}没人回。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马