2013-08-16 5 views
0

У меня есть объект в ArrayList, и я хочу напечатать объект на своем экране, но я не могу сделать это с этими getters. Как я могу это сделать?Getter для объекта в 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; 
     } 
+0

В чем проблема? – Shoe

+1

Почему бы просто не написать собственный метод 'toString' для вашего объекта? –

+0

Объявить arraylist как Список rij = new ArrayList (); –

ответ

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()); 
} 

круглые скобки вопрос. Вы точно знаете, что вы делаете и когда.

+0

Большое спасибо! Я новичок в java, поэтому мне это очень помогает! –

+1

Но то, что вы действительно должны делать, это использовать генерики вместо использования необработанного типа 'ArrayList'; см. ответ JB Nizet. Тогда вам не понадобится бросок. – Jesper

0

Если вы хотите напечатать Person объект, попробуйте это и Override toString() метод в Person классе

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

Ему нужно будет переопределить метод 'toString', иначе вывод будет для него бесполезным. –

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()); 
} 

Использование цикла Еогеасп также приведет к более безопасным и более читаемый код:

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

for (Persoon persoon : personen) { 
    System.out.println(persoon.getNaam() + " " + persoon.getVoornaam() + " " + persoon.getLeeftijd()); 
} 
+0

Множество «persoon» является «personen» на голландском языке ... ;-) – Jesper

+0

@ Jesper: учитывая, что я бельгийка и изучил голландский, когда я учился в школе, я чувствую себя обязанным исправить свой ответ :-) Но я код ненависти на любом неанглийском языке, даже французский (это мой родной язык) –

+0

Я использую raw ArrayList, потому что таким образом они учили меня в школе ... –

0

я рекомендовал бы в случае, если вы хранящей obect как «люди» в ваших case.Its всегда лучше использовать "итератор"

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

Смежные вопросы