2016-12-03 3 views
0

Ich versuche, eine Person, die in einem Konstruktor definiert wurde, zu einer ArrayList hinzuzufügen, so dass ich dann eine Methode aufrufen kann, die in einer anderen Klasse ist. Ich habe Probleme mit dem Hinzufügen einer Person zu der ArrayList jedoch. Hier ist, was ich bisher:Hinzufügen von Eigenschaften eines Konstruktors zu einer ArrayList?

Grownup Klasse aktualisiert

public class GrownUp extends Person 
{ 
    ArrayList<Person> people; 



GrownUp(int age, String name) 
{ 
    super(age, name); 
    this.people = new ArrayList<>();   
    name = "Bill"; 
    age = 36;   
} 

public ArrayList<Person> getGrownUp() 
{ 
    return people; 
} 

public void setGrownUp(int age, String name) 
{ 
    //how to add a GrownUp? 
} 

Also, was getan werden muss, ist:

  • hinzufügen Person, die als "Bill" definiert wurde, 36 im Alter von zu ArrayList people.

Jede Hilfe wird geschätzt, danke.

Ich habe zuvor eine ähnliche Frage gestellt, aber war nicht klar in dem, was ich gefragt habe, also habe ich meine Frage geändert, so dass es hoffentlich macht mehr Sinn in dem, was ich versuche zu erreichen. Ich habe eine get-Methode hinzugefügt, aber ich kann nicht herausfinden, wie man die set-Methode macht. Wie würde ich den Konstruktor Person mit der ArrayList in Beziehung setzen, um eine Person hinzuzufügen?

Antwort

3

Ich denke, es ist ein bisschen seltsam, die Menschen-Array innerhalb der GrownUp-Klasse zu haben. Versuchen Sie, es der realen Welt zuzuordnen. Wäre es sinnvoll, Leute in einem GrownUp zu haben? Ich hätte lieber das Array außerhalb und dies tun:

List<People> people = new ArrayList<>(); 
people.add(new GrownUp(25, "Alice")); 
people.add(new GrownUp(36, "Bill")); 
people.add(new Child(5, "Nina")); 

Die Grownup Klasse dann würde wie folgt aussehen:

public class GrownUp extends Person { 

    public GrownUp(int age, String name) { 
     super(age, name) 
    } 
} 

Ich denke, Sie planen, mehr Eigenschaften hinzuzufügen, die auf die Grownup Klasse spezifisch ist wie Optional<DriversLicense> getDriversLicense() oder ähnlich.

+0

Danke für die Rückmeldung, wenn ich sagen würde, eine Methode auf diesem GrownUp, wie würde ich das tun, wenn die Methode namens 'essen()'? – Harry

+0

Wenn alle Personen (einschließlich Kinder) essen sollten: 'people.stream(). Foreach (Person -> person.eat());' Wenn nur GrownUps zu essen wären: 'people.stream(). filter (person -> person instance von GrownUp.class) .foreach (groupedUp -> groupUp.eat()); ' – Einar

+0

Um alle Treiber zu erhalten. 'Liste driversLicenses = people.stream(). Filter (person -> person instance von GrownUp.class) .foreach (groupUp -> ((GrownUp) growUp) .getDriversLicense()). Collect (Collectors.toList()); ' – Einar

1

Dies sollte Ihnen helfen.

public void setGrownUp(int age, String name) 
{ 
people.add(new GrownUp(age,name)); 
} 
Verwandte Themen