1

我在 ArrayList 中有一个对象,我想在我的屏幕上打印该对象,但我不能用这些吸气剂来做。我怎样才能做到这一点?

public void start() {
            ArrayList rij = new ArrayList();
            rij.add(new Persoon("Foo","Bar",18));
            rij.add(new Persoon("Jane","Doe",52));
            rij.add(new Persoon("John","Doe",23));

            for(int i = 0; i < 3; i++){
                System.out.println((Persoon)rij.get(i).getNaam() + " " + rij.get(i).getVoornaam() + " " + rij.get(i).getLeeftijd());
            }
        }



    private String naam = "";
        private String voornaam = "";
        private int leeftijd = 0;

        public Persoon(String naam, String voornaam, int leeftijd){
            this.naam = naam;
            this.voornaam = voornaam;
            this.leeftijd = leeftijd;
        }

        public String getNaam(){
             return naam;
        }

        public String getVoornaam(){
            return voornaam;
        }

        public int getLeeftijd(){
            return leeftijd;
        }
4

4 回答 4

5

问题是您的演员表Persoon被应用于rij.get(i).getNaam(),而不是rij.get(i)

你想要的是:

((Persoon)rij.get(i)).getNaam()ETC

或者更简单地说:

for(int i = 0; i < 3; i++){
    Persoon p = rij.get(i);
    System.out.println(p.getNaam() + " " + p.getVoornaam() + " " + p.getLeeftijd());
}

括号很重要。你已经确切地知道你在投射什么以及什么时候投射。

于 2013-08-16T14:30:20.063 回答
1

不要使用原始的 ArrayList。使用通用的:

这将确保类型安全,并允许您完全避免强制转换。

List<Persoon> personen = new ArrayList<Persoon>();
//...

for (int i = 0; i < personen.size(); i++) {
    System.out.println(personen.get(i).getNaam() + " " + personen.get(i).getVoornaam() + " " + personen.get(i).getLeeftijd());
}

使用 foreach 循环也将导致更安全、更易读的代码:

List<Persoon> personen = new ArrayList<Persoon>();
//...

for (Persoon persoon : personen) {
    System.out.println(persoon.getNaam() + " " + persoon.getVoornaam() + " " + persoon.getLeeftijd());
}
于 2013-08-16T14:36:57.703 回答
0

如果你在你的情况下存储像“人”这样的对象,我会推荐。使用“迭代器”总是更好

 ArrayList rij = new ArrayList();
        rij.add(new Persoon("Foo","Bar",18));
        rij.add(new Persoon("Jane","Doe",52));
        rij.add(new Persoon("John","Doe",23));
        Iterator item=rij.iterator();
        while (item.hasNext()){
            Persoon person=(Persoon)item.next();
            System.out.println(person.getNaam() + " " + person.getVoornaam() + " " + person.getLeeftijd());
        }

java.util.iterator;

希望它会起作用。如果不告诉我,我会转发完整的代码.. :D

于 2013-08-16T14:37:29.417 回答
0

如果你想打印对象,试试这个并在你的类中Person覆盖toString()方法Person

System.out.println((Persoon)rij.get(i));
于 2013-08-16T14:25:29.973 回答