用于实例化初始化集合的紧凑语法

新手上路,请多包涵

我正在寻找一种用于实例化集合并向其中添加一些项目的紧凑语法。我目前使用这种语法:

 Collection<String> collection =
    new ArrayList<String>(Arrays.asList(new String[] { "1", "2", "3" }));

我似乎记得有一种更紧凑的方法可以使用 ArrayList 的匿名子类,然后在子类的构造函数中添加项目。但是,我似乎不记得确切的语法。

原文由 Dónal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 331
2 个回答

我猜你在想

collection = new ArrayList<String>() { // anonymous subclass
     { // anonymous initializer
         add("1");
         add("2");
         add("3");
     }
}

其中,一个 compacted,给出

collection = new ArrayList<String>() {{ add("1"); add("2"); add("3"); }}

FUGLY,至少可以这么说。但是,Arrays.asList 方法有一个变体: Arrays.asList(T...a) 它提供了兼容性和可读性。例如,它给出了以下代码行:

 collection = new ArrayList<String>(Arrays.asList("1", "2", "3")); // yep, this one is the shorter

并注意您没有创建可疑用途的 ArrayList 的匿名子类。

原文由 Riduidel 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题