我用的术语可能不对所以罗嗦了一点想把问题讲清楚,请见谅。
大家好,我有个作业,把一个class对象,比如a,存储到ArrayList里面,这个a有一些public参数,比如a.address,a.phoneNumber, 我想读取这些参数的时候遇到了问题。我读了ArrayList的函数手册,里面提供了get()函数,那么我用a.get(i).address却得不到在i位置上的那个对象的address,eclipse提示出错。我又试了用iterator itr = a.iterator();然后用itr.address,也不对。那么我应该怎么样做呢?

解决方案 »

  1.   

    可以看看API,get()函数和iterator()返回的都是Object对象,应该先强制转型为a
      

  2.   

    用generic.
    ArrayList<SomeType> l = new ArrayList<SomeType>();
      

  3.   

    几种情况都写了,可以对比着学习一下:import java.util.*;public class Test {
        public static void main(String[] args) {
            testA();
            testB();
            testC();
        }    public static void testA() {
            // 使用泛型
            System.out.println("Test A:");
            ArrayList<Person> ps = new ArrayList<Person>();
            ps.add(new Person("address 1", "12345"));
            ps.add(new Person("address 2", "23456"));
            ps.add(new Person("address 3", "87654"));        Iterator<Person> iter = ps.iterator();
            while (iter.hasNext()) {
                Person temp = iter.next();
                System.out.println("Address: " + temp.address + ", PhoneNumber: " + temp.phoneNumber);
            }
        }    public static void testB() {
            // 容器的普通方式,使用iterator取得元素
            System.out.println("\nTest B:");
            ArrayList ps = new ArrayList();
            ps.add(new Person("address 1", "12345"));
            ps.add(new Person("address 2", "23456"));
            ps.add(new Person("address 3", "87654"));        Iterator iter = ps.iterator();
            while (iter.hasNext()) {
                Person temp = (Person) iter.next();
                System.out.println("Address: " + temp.address + ", PhoneNumber: " + temp.phoneNumber);
            }
        }
        
        public static void testC() {
            // 容器的普通方式,但以get取得指定位置的元素
            System.out.println("\nTest C:");
            ArrayList ps = new ArrayList();
            ps.add(new Person("address 1", "12345"));
            ps.add(new Person("address 2", "23456"));
            ps.add(new Person("address 3", "87654"));
            
            for (int i = 0; i < ps.size(); ++i) {
                Person temp = (Person) ps.get(i);
                System.out.println("Address: " + temp.address + ", PhoneNumber: " + temp.phoneNumber);
                
            }
        }
    }class Person {
        String address;
        String phoneNumber;    Person(String address, String phoneNumber) {
            this.address = address;
            this.phoneNumber = phoneNumber;
        }
    }