- public class Demo {
- /**
- * 3、 ArrayList<Integer> list = new ArrayList<Integer>();
- * 在这个泛型为Integer的ArrayList中存放一个String类型的对象。
- * @param args
- */
- private static ArrayList<Integer> list = new ArrayList<Integer>();
- public static void main(String[] args) throws Exception {
- // TODO Auto-generated method stub
- Class c=Test3.class;
- Field f=c.getDeclaredField("list");
- Class clazz=f.getType();
- Method method=clazz.getMethod("add", Object.class);
- method.invoke(list, "字符串");
- for(Object obj:list)
- {
- System.out.println(obj);
- }
-
- }
- }
复制代码 上述是使用反射完成的,不必去看,下面是正文:- public class Demo {
- /**
- * 3、 ArrayList<Integer> list = new ArrayList<Integer>();
- * 在这个泛型为Integer的ArrayList中存放一个String类型的对象。
- * @param args
- */
-
- public static void main(String[] args) throws Exception {
- // TODO Auto-generated method stub
- ArrayList<Integer> list = new ArrayList<Integer>();
- //将该列表使用迭代器封装,迭代器是List特有的ListIterator
- ListIterator listit=list.listIterator();
- //使用迭代器ListIterator的add方法,存放字符串
- listit.add("字符串");
- //打印该字符串进行试验
- System.out.println(listit.previous().toString());
- System.out.println(list.get(0).toString());
-
-
- }
- }
- /*
- * 最好两个打印语句,迭代器的强转可以,而通过get会抛出强转类型异常,当然迭代器
- * 可以不需要toString()就能打印出“字符串”。奇怪的是:为什么通过toString
- * 不能将元素转换为字符串。
- * */
复制代码 再比较下这个:如下
- public static void main(String[] args) throws Exception {
- // TODO Auto-generated method stub
- ArrayList<Integer> list = new ArrayList<Integer>();
- list.add(3);
- //将该列表使用迭代器封装,迭代器是List特有的ListIterator
- //ListIterator listit=list.listIterator();
- //使用迭代器ListIterator的add方法,存放字符串
- // listit.add("字符串");
- //打印该字符串进行试验
- //System.out.println(listit.previous().toString());
- System.out.println(list.get(0).toString());
-
-
- }
- }
复制代码 这个能通过,打印3:
我得出的结论,调用get()提取元素,再调用toString(),集合难道会先检查元素的类型是否属于泛型,才能调用toString()???
|
|