为什么要返回数组的副本?

时间:2013-04-12 06:32:26

标签: java solr dataimporthandler

我正在阅读solr的dataimporthandler组件的源代码。我遇到了一个问题

  private List<String> readBySplit(String splitBy, String value) {
    String[] vals = value.split(splitBy);
    List<String> l = new ArrayList<String>();
    l.addAll(Arrays.asList(vals));
    return l;
  }

↑列出1(来自RegexTransformer类的方法)

  private List<String> readBySplit(String splitBy, String value) {
    String[] vals = value.split(splitBy);
    return Arrays.asList(vals);
  }

↑列表2(我认为上面的方法应该是)

有谁能告诉我上面两个代码清单之间有什么重大区别?感谢。

3 个答案:

答案 0 :(得分:7)

Arrays.asList() Returns a fixed-size list backed by the specified array.

那是来自javadoc。因此,如果你想要一个动态大小的列表,你需要第一个代码。

答案 1 :(得分:2)

Arrays.asList()返回固定大小的列表,这是未修改的列表。您无法对其执行添加/删除操作,这样做会抛出Exception UnsupportedOperationException

因此,如果您想对列表

进行一些操作,那么您的第一种方法是合适的

答案 2 :(得分:0)

您无法在代码2的列表中添加任何内容,因为它返回固定大小的列表。您将获得“java.lang.UnsupportedOperationException “,但您可以按代码1添加列表返回。