本帖最后由 伍叶竹 于 2014-4-15 22:50 编辑
- import java.util.*;
- class Person
- {
- private String name;
- private int age;
- Person(String name,int age)
- {
- this.name = name;
- this.age = age;
- }
-
- public String getName()
- {
- return name;
- }
- public int getAge()
- {
- return age;
- }
- }
- class ArrayListTest2
- {
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- public static void main(String[] args)
- {
- ArrayList al = new ArrayList();
-
- al.add(new Person("lisi01",30));//al.add(Object obj)//Object obj = new Person("lisi01",30);被提升了?
- al.add(new Person("lisi02",32));
- al.add(new Person("lisi03",33));
- al.add(new Person("lisi04",35));
- Iterator it = al.iterator();
- while(it.hasNext())
- {
- sop(it.next().getName()+"::"+it.next().getAge());//出错。Object无getName()和getAge()方法。附图。换成下述两行不出错。
- //Person p = (Person)it.next();
- //sop(p.getName()+"::"+p.getAge());
- }
- }
- }
- /*
复制代码
=====================================================================
我所知道的是:add方法的参数类型是Object。以便于接收任意类型对象。所以32行处,实质是al.add(Object obj);
Object obj = new Person("lisi01",30); 所以是被提升了。add中不是Person类了,自然识别不来get方法。
这些是我知道的。可是不太懂。 求高手细致讲解。
===========================================================================
另外。API文档中,ArrayList中add方法。有两个: boolean add(element e);
void add(int index,element e);
上例中add是其中之一的应用吗?如何理解?
|