【问题标题】:Generic unmodifiableList通用不可修改列表
【发布时间】:2018-01-02 20:42:24
【问题描述】:

我写道:

this.array = (X[]) Array.newInstance(init.getClass(), size);

// ...

public List<X> get()  {        
    return Collections.<X>unmodifiableList(this.array);
}

但我得到了错误:

Collections 中的unmodifiableList 不能应用于 (X[])

如何创建通用的不可修改列表?

【问题讨论】:

  • return Collections.unmodifiableList(new ArrayList&lt;&gt;());
  • @Lino 你的意思是Collections.emptyList()
  • @shmosel 当我再次阅读我写的评论时,这对我来说似乎很错误,因为 OP 可能有一个填充数组而不是一个空数组。但是,如果他确实想返回一个空列表,那么您的方法会更好

标签: java arrays generics collections unmodifiable


【解决方案1】:

你可以这样做:

public List<X> get()  {
    return Collections.unmodifiableList(Arrays.asList(this.array));
}

【讨论】:

  • 第一个选项不起作用,因为没有接受数组的 ArrayList 构造函数。第二个虽然是正确的
  • 酷,它现在是完全正确的答案,即使它与第二个答案相同。
【解决方案2】:

你需要这样做:

public List<X> get()
{
    List<X> modifiableList = Arrays.asList( this.array );
    return Collections.unmodifiableList( modifiableList );
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-15
    • 2013-04-27
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多