Java 为什么我能';t使用方法返回的列表引用添加元素

Java 为什么我能';t使用方法返回的列表引用添加元素,java,arraylist,collections,Java,Arraylist,Collections,使用方法返回的列表引用添加元素时出错 Dummy.java package firstPro; import java.util.List; public class Dummy { private List<String> names; public Dummy(List<String> names) { this.names = names; } public List<String> getNam

使用方法返回的列表引用添加元素时出错

Dummy.java

package firstPro;

import java.util.List;

public class Dummy {

    private List<String> names;

    public Dummy(List<String> names) {
        this.names = names;
    }

    public List<String> getNames() {
        return this.names;
    }

}
我知道我可以通过添加

新建ArrayList(obj.getNames())

我的问题是,为什么我不能将该引用作为原始引用?

来自我的JavaDoc,强调:

返回指定数组支持的固定大小的列表

您可以使
Dummy
处理修改,方法是将接收列表中的值复制到新的
ArrayList
实例中, 通过更改其构造函数:

public Dummy(List<String> names) {
    this.names = new ArrayList<>(names);
}
公共虚拟(列表名称){
this.names=新的ArrayList(名称);
}
来自我的JavaDoc,强调:

返回指定数组支持的固定大小的列表

您可以使
Dummy
处理修改,方法是将接收列表中的值复制到新的
ArrayList
实例中, 通过更改其构造函数:

public Dummy(List<String> names) {
    this.names = new ArrayList<>(names);
}
公共虚拟(列表名称){
this.names=新的ArrayList(名称);
}
数组。asList(“foo1”、“foo2”、“foo3”、“foo4”、“foo5”)
创建一个固定大小的列表,因此您无法向其中添加/删除元素(仅修改现有元素或替换现有索引中的元素)

您可以使用:

new ArrayList<>(Arrays.asList("foo1", "foo2", "foo3", "foo4", "foo5"))
newarraylist(Arrays.asList(“foo1”、“foo2”、“foo3”、“foo4”、“foo5”))
支持添加新元素。

数组。asList(“foo1”、“foo2”、“foo3”、“foo4”、“foo5”)
创建一个固定大小的列表,因此不能向其中添加/删除元素(只能修改现有元素或替换现有索引中的元素)

您可以使用:

new ArrayList<>(Arrays.asList("foo1", "foo2", "foo3", "foo4", "foo5"))
newarraylist(Arrays.asList(“foo1”、“foo2”、“foo3”、“foo4”、“foo5”))
支持添加新元素。

到quote的文档:

返回指定数组支持的固定大小的列表

由于返回的
列表
具有固定的大小,因此它不支持
添加
操作,调用它将抛出一个
不支持操作异常

引用的文档:

返回指定数组支持的固定大小的列表


由于返回的
列表
具有固定的大小,因此它不支持
添加
操作,调用它将抛出一个
不支持操作异常

注意,允许类的用户直接访问内部状态通常是不可取的。返回
Collections.unmodifiableList(names)
允许您控制该列表的内容(尽管如果您试图添加到该列表中,也会导致引发异常)。最好在你的class.tnx上提供一个加法器方法,先生,我会记住的。注意,允许你的类的用户直接访问内部状态通常是不可取的。返回
Collections.unmodifiableList(names)
允许您控制该列表的内容(尽管如果您试图添加到该列表中,也会导致引发异常)。最好在你的class.tnx上提供一个加法器方法,先生,我会记住的