在构造函数中获取枚举集并创建列表 - Java

时间:2017-10-09 13:36:33

标签: java enums

我想创建一个新学生并使用他们注册的主题列表来实例化它们,但我不知道是否可能或如何完成它?

我最初在构造函数中放了一个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
}

2 个答案:

答案 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);
    }
}