什么是浅拷贝?

What is shallow copy?

我创建了一个构造函数,据我的教授说,我违反了封装,说构造函数中有一个浅拷贝。我正在写这个问题,希望我能看到我做错了什么。因为我真的不知道它是什么,因为我的字段是私有的,而且我还创建了 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);

}

非常感谢您!

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

您只是将引用或地址指向旧对象,这就是浅拷贝所做的。
尝试执行深拷贝,它会在你的项目中创建一个新的内存space,并且两者都将在内存中有自己的存在,而不仅仅是引用。

java 中的浅拷贝意味着您只是创建一个指向旧对象值存储位置的新对象。 换句话说,浅拷贝可以说是参考拷贝。 在浅拷贝中,对象将在堆栈​​中具有不同的内存,但在堆中具有相同的内存。因此,您将拥有两份副本,但对一份应用的任何更改也可以在另一份上看到。