我创建了一个构造函数,并且据我的教授说,我违反了封装,他说构造函数中存在浅表副本。我正在写这个问题,希望我能看到我做错了什么。因为老实说我不知道​​这是什么,因为我的字段是私有的,所以我还创建了getter和setter(未显示)。

代码:

public class Class {
    private int difficultyLevel;
    private String subject;
    private List<Student> students;

    public Class(final int theLevel, final String theSubject,
        final List<Student> theStudents) {
    if (theLevel < 0 || theSubject.length() == 0) {
        throw new IllegalArgumentException();
    }
    if (theSubject == null || theStudents == null) {
        throw new NullPointerException();
    }
    difficultyLevel = theLevel;
    subject = theSubject;
    students = new ArrayList<Student>(theStudents);

}


提前非常感谢您!

最佳答案

浅拷贝是指在数据结构中复制对象的引用而不是复制对象本身并保存它们的副本(深层副本)时
在这种情况下,我想他是在谈论学生。他可能希望您保存每个学生(新学生)的副本阵列

10-06 09:04