【问题标题】:Java Unable to add a new list item [duplicate]Java无法添加新列表项[重复]
【发布时间】:2020-03-27 12:43:57
【问题描述】:

我正在使用下面的代码从注册表生成一个列表。

  List<String> options = Arrays.asList(Advapi32Util.registryGetStringArray(HKEY_LOCAL_MACHINE, key, value)

稍后在我要添加到此列表的代码中但是 add 方法不起作用。

下面的代码给了我一个 java.lang.unsupportedOperationException。

  options.add("Test");


  Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(AbstractList.java:148)
    at java.util.AbstractList.add(AbstractList.java:108)

任何想法。

【问题讨论】:

    标签: java list


    【解决方案1】:

    Arrays.asList() 返回一个不可变列表。而是可以使用 new ArrayList&lt;&gt;()。代码如下所示:

    List<String> options = new ArrayList<>(Arrays.asList(
        Advapi32Util.registryGetStringArray(HKEY_LOCAL_MACHINE, key, value)));
    options.add("Test");
    

    【讨论】:

    • 谢谢,让我试一试。
    • Java 似乎没有将其链接起来。 List 类型中的方法 add(String) 不适用于参数 (String[])。是因为我是从 reg 那里得到的吗?
    • 我忽略了该方法返回一个数组。因为您可以将集合传递给ArrayList 构造函数,所以您的代码中唯一的更改是用new ArrayList&lt;&gt;() 包装它。查看答案更新。
    【解决方案2】:

    Arrays.asList 创建不可修改的不可变列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-11
      • 2014-10-24
      • 1970-01-01
      • 2021-12-25
      • 2019-11-05
      • 1970-01-01
      相关资源
      最近更新 更多