我想创建一个新学生并使用他们注册的主题列表来实例化它们,但我不知道是否可能或如何完成它?
我最初在构造函数中放了一个ArrayList,但我确定这是错误的。
最终的结果是,我有一名学生,他们正在学习名字,身份证和可编辑的科目列表,以便他们可以在以后的时间内加入和退出课程......
Student.java
private String name;
private int id;
private static int counter;
private ArrayList<Subjects> subjects;
public Student(String name, ArrayList<Subjects> subjects) {
this.name = name;
this.subjects = subjects;
counter++;
id=counter;
}
School.java
public class School {
List<Student> students = new ArrayList<>();
public void addStudent(String name, ArrayList<Subjects> subjects) {
Student tempStudent = new Student(name,subjects);
students.add(tempStudent);
}
}
Run.java 我的问题来了......
public class Run {
public static void main(String[] args) {
School school = new School();
school.addStudent("ABC", Subjects.English.toString().......... );
}
}
Subjects.java
public enum Subjects {
Maths,
English,
Science
}
答案 0 :(得分:2)
您不是在创建Array
,也不是在添加Enum
。更改您的Student
课程以及与其相关联的每个方法都需要List
,而不是ArrayList
,例如
private List<Subjects> subjects;
然后你可以使用
school.addStudent("ABC", Arrays.asList(Subjects.Maths, Subjects.English));
答案 1 :(得分:1)
这就是我要做的事情:
private String name;
private int id;
private static int counter;
private List<Subjects> subjects;
public Student(String name, Collection<Subjects> subjects) {
this.name = name;
this.subjects = new ArrayList<>(subjects);
counter++;
id=counter;
}
// second constructor for convenience
public Student(String name, Subjects... subjects) {
this(name, Arrays.asList(subjects));
}
...
public class School {
List<Student> students = new ArrayList<>();
public void addStudent(String name, List<Subjects> subjects) {
Student tempStudent = new Student(name,subjects);
students.add(tempStudent);
}
public void addStudent(String name, Subjects... subjects) {
Student tempStudent = new Student(name,subjects);
students.add(tempStudent);
}
}