ArrayList中对象的getter

时间:2013-08-16 14:22:53

标签: java object arraylist getter

我在ArrayList中有一个对象,我想在屏幕上打印该对象,但我不能用这些getter来做。我怎么能这样做?

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 个答案:

答案 0 :(得分:4)

问题是,您Persoon投射到rij.get(i).getNaam(),而不是rij.get(i)

你想要的是:

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

或更简单:

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

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

答案 1 :(得分: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());
}

答案 2 :(得分:0)

如果您要打印Person个对象,请在toString()类中尝试此操作并覆盖Person方法

System.out.println((Persoon)rij.get(i));

答案 3 :(得分:0)

我会建议你在你的情况下存储类似“人物”的对象。总是更好地使用“iterator”

 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