【问题标题】:Java - constructing objects from different, separate classes and adding them to the sameArray ListJava - 从不同的单独类构造对象并将它们添加到相同的数组列表中
【发布时间】:2015-05-17 23:42:24
【问题描述】:

我正在尝试创建一个构造对象的新实例并将其添加到数组列表的方法。问题是可以使用几个不同的类/对象,并且所有新实例都必须由相同的方法创建,所以我必须能够将我希望创建的对象类型传递给该方法,以及构造函数的参数(参数始终相同,三个int和一个String)。

public void makeAppointment(Object app, int a, int b, int c, String desc){
    app.getClass();
}

这是我对接收所有信息的方法的最佳猜测。有没有办法存储 app.getClass(); 返回的内容,以便我可以使用它来调用构造函数?

我已经有一个方法 (addAppointment) 可以向 ArrayList 添加一个对象,我可以从我正在处理的这个方法中调用它。

public static List<Appointment> apps = new ArrayList<Appointment>();

public AppointmentBook addAppointment(Appointment app) {
    apps.add(app);
    return this;
}

------- 编辑

所以这是完整的课程:

public class AppointmentBook {

public static List<Appointment> apps = new ArrayList<Appointment>();

public AppointmentBook addAppointment(Appointment app) {
    apps.add(app);
    return this;
}

public void addAppointment(int month, int day, int year, String desc) {
    Appointment appointment = new Appointment(month, day, year, desc);
    apps.add(appointment);
}// addApp

public void addOnetime(int month, int day, int year, String desc) {
    Onetime oneTime = new Onetime(month, day, year, desc);
    apps.add(oneTime);
}// addOnce

public void addMonthly(int month, int day, int year, String desc) {
    Monthly monthly = new Monthly(month, day, year, desc);
    apps.add(monthly);
}// addMonth

public void addDaily(int month, int day, int year, String desc) {
    Daily daily = new Daily(month, day, year, desc);
    apps.add(daily);
}// addMonth

public void makeAppointment(Object app, int a, int b, int c, String desc){
    Class<? extends Object> a = app.getClass();

}

}//类

我有一个类约会簿,它有一个存储约会的数组列表。我有三个子类的约会。这些子类中的每一个都有一个构造对象的构造函数。我想使用方法makeAppointment添加约会,但是我不知道如何在参数中指定我想创建哪种对象,以便我可以在方法内部调用构造函数。

【问题讨论】:

  • 好的,那你有什么问题?
  • 有没有办法存储app.getClass(); 返回的内容,以便我可以使用它来调用构造函数?
  • 给我们更多信息:你有什么样的“不同的班级”?我假设它们都是Appointment 的子类,不是吗?你如何/在哪里决定实例化哪个类?
  • 是的,Appointment 有三个子类,启动哪个类是在参数中决定的,或者至少我认为这是解决这个问题的正确方法

标签: java object parameters constructor


【解决方案1】:

对我来说,你想要达到的目标并不是很清楚。 但我最好的猜测是多态性。

你需要一个类来定义你的列表

public class AppointmentList extends ArrayList{
}

从您的主类中,您可以初始化约会列表以保存约会

而你要添加的所有约会都需要扩展抽象类Appointment。如果您将主类传递给所有需要它的类,则可以从那里调用添加约会方法。

我希望我确实了解您的问题并解决了它。否则你需要给我更多的代码

【讨论】:

    猜你喜欢
    • 2018-03-19
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    相关资源
    最近更新 更多