Setter in Interface&将对象转换为数组

时间:2018-05-28 10:47:59

标签: java arraylist interface

我在理解两个小任务时遇到了一些问题。我尽量具体,但我必须翻译德语中的所有内容,所以请记住这一点。任务是编写一种训练游戏"你可以在哪里建立培训课程等。 我的第一个任务是实现一个充满三种不同方法的接口:

  • void setCaloryGoal(int caloryGoal) - >设置caloryGoal
  • int getCaloryGoal - >返回caloryGoal
  • double getAchievementDegree - >返回achievementdegree(burnedcalories / caloryGoal)

我们必须实现一个新的类TrainingsessionWithGoal,你使用超类Trainingsession的构造函数,但你必须添加caloryGoal,我不知道,我怎么能从界面实现它(我确信,我们必须使用set方法实现它。我目前的代码是:

public TrainingsessionWithGoal(int trainingtime, Fitnessdevice fitnessdevice, int day, int month, int year, int hh, int mm, int caloryGoal) {
    super(trainingtime, fitnessdevice, day, month, year, hh, mm);
    this.caloryGoal = caloryGoal;
}

这完全有效,但我很确定,我实现caloryGoal的方式不正确,因为我从不使用界面中的set-method。有没有人对此有所了解?

在另一个任务中,我们必须创建一个新的类TrainingProgramm,在其中我们实现一个arraylist,它充满了类Trainingsession的不同对象和新类TrainingsessionWithGoal)在那里我完全不知道如何处理。我搜索了一切,但找不到能帮助我的东西。

这是我到目前为止所做的:

private ArrayList <Objects> list = new ArrayList <Objects> ();

public TrainingProgramm (String programmName, ArrayList<Objects> list) {
    this.programmName = programmName;
    this.list = list;
}

但这显然不起作用。如果有人能以正确的方式引导我,那将是非常有帮助的。

1 个答案:

答案 0 :(得分:1)

根据Lino的建议,您可以更改ArrayList<Object> to ArrayList<? extends Trainingsession>。更好的是你使用你的(但命名的)接口。 并且字段的类型和方法的参数应该是List,而不是ArrayList。那些应该被正确命名 - 而不是列表给他们更多的语义名称。那样你会......像这样:

private List<YourInterface> sessions = new ArrayList <YourInterface> ();
public TrainingProgramm (String programmName, List<TrainingSessionInterface> sessions) { ... }