有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java对象数组没有合适的构造函数

我不知道对象数组的合适构造函数。有这样的构造函数吗

Object[] newArr = new Object[this.count];
List result = new List (newArr);

这一行总是错误的:

error: no suitable constructor found for List(Object[])
                                        List newArr = new List(result);
constructor List.List(String[]) is not applicable
      (argument mismatch; Object[] cannot be converted to String[])
    constructor List.List(Integer[]) is not applicable
      (argument mismatch; Object[] cannot be converted to Integer[])

我该怎么办?我需要从一个新的对象数组中复制这个。arr(对象数组)

我真的对这部分感到困惑


共 (1) 个答案

  1. # 1 楼答案

    如果需要数组“支持”的List,可以使用Arrays.asList(yourArray)。被“支持”意味着:

    • 这个列表既不能增加也不能减少,所以,addclear等都不起作用^不过,{}确实如此
    • 对数组所做的任何更改都可以通过列表看到
    • 对列表所做的任何更改(使用.set)都可以在数组中看到
    • 不存在数据重复,只有当此阵列包含数万个条目或更多条目时,数据重复才有意义

    如果您想要一个副本(也就是说,列表和数组是完全独立的;对其中一个的更改不会应用于另一个),您有几个选项:

    • new ArrayList<>(Arrays.asList(yourArray));
    • List.of(yourArray);

    第一个是可变的(这意味着,结果列表对象可以以任何方式更改,例如使用.add.clear)。第二个是不变的:根本无法改变。这可能是有用的;例如,你可以把一个不可变的列表交给任何你想要的代码,而不用担心他们会从你下面改变你的列表。对于可变变体,你必须分发克隆,这会让你写起来很烦人,如果这个列表很大的话,内存也会很昂贵