Java 添加构造函数';将属性添加到ArrayList?

Java 添加构造函数';将属性添加到ArrayList?,java,arraylist,multiple-inheritance,Java,Arraylist,Multiple Inheritance,我试图将构造函数中定义的人添加到ArrayList中,这样我就可以调用另一个类中的方法。但是,我在向ArrayList添加人员时遇到了问题。以下是我到目前为止的情况: 成人课程更新 public class GrownUp extends Person { ArrayList<Person> people; GrownUp(int age, String name) { super(age, name); this.people = new Arra

我试图将构造函数中定义的人添加到ArrayList中,这样我就可以调用另一个类中的方法。但是,我在向ArrayList添加
人员时遇到了问题。以下是我到目前为止的情况:

成人课程更新

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? 
}
公共类成人扩展个人
{
ArrayList人;
成人(整数年龄,字符串名称)
{
超级(年龄、姓名);
this.people=new ArrayList();
name=“比尔”;
年龄=36岁;
}  
公共阵列列表getGrownUp()
{
还人,;
}
public void setGrownUp(整数,字符串名)
{
//如何添加成年人?
}
因此,需要做的是:

  • 将定义为36岁“账单”的
    人员添加到ArrayList
    人员
谢谢你的帮助

我以前问过一个类似于此的问题,但我问的内容不清楚,所以我改变了我的问题,希望它在我试图实现的目标中更有意义。我添加了一个get方法,但我不知道如何执行set方法。我如何将
Person
构造函数与ArrayList关联以添加Person int这应该对你有帮助

public void setGrownUp(int age, String name)
{
people.add(new GrownUp(age,name));
}
这应该对你有帮助

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

我认为在成人类中使用人物数组有点奇怪。尝试将其映射到现实世界。在成人类中使用人物数组有意义吗?我宁愿在外部使用该数组并执行以下操作:

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

我猜您计划添加更多特定于GrownUp类的属性,比如
可选的getDriversLicense()
或类似内容。

我认为在成人类中包含人物数组有点奇怪。尝试将其映射到现实世界。在成人类中包含人物有意义吗?我宁愿将该数组放在外部,然后执行以下操作:

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

我猜您正计划添加更多特定于GrownUp类的属性,如
可选getDriversLicense()
或类似属性。

感谢您的反馈,如果我说对该GrownUp调用一个方法,如果该方法被调用
eat()
,我将如何执行?如果所有人(包括儿童)我们要吃:
people.stream().foreach(person->person.eat());
如果只是成年人吃:
people.stream().filter(person->person instanceof GrownUp.class.).foreach(GrownUp->GrownUp.eat());
获取所有驾驶执照。
列出驾驶执照=people.stream().filter(person->person instanceof GrownUp.class).foreach(grownUp->((grownUp)grownUp.getDriversLicense()).collect(collector.toList())
这里看起来有点乱,但是如果你在点之前打断线,它应该看起来更好。当然你也可以使用传统的for循环而不是stream API。谢谢你的反馈,如果我说在那个成年人身上调用一个方法,如果这个方法被调用
eat()
,我该怎么做?如果所有人(包括孩子)要吃:
people.stream().foreach(person->person.eat());
如果只是成年人吃:
people.stream().filter(person->person instanceof GrownUp.class.).foreach(GrownUp->GrownUp.eat());
要获得所有的驾驶员执照。
列出驾驶员执照=people.stream().filter(person->person instanceof GrownUp.class).foreach(GrownUp->((GrownUp)GrownUp.getDriversLicense()).collect(Collectors.toList());
这里看起来有点乱,但是如果在点之前断开线,看起来应该会更好。当然,您也可以使用传统for循环,而不是流API。