java - 为什么要收集文字?

标签 java collections java-7

从有关 Java 7 的各种在线文章中,我了解到 Java 7 将具有如下的集合字面量1:

List<String> fruits = [ "Apple", "Mango", "Guava" ];
Set<String> flowers = { "Rose", "Daisy", "Chrysanthemum" };
Map<Integer, String> hindiNums = { 1 : "Ek", 2 : "Do", 3 : "Teen" }; 

我的问题是:

  1. 难道不能提供静态方法of在所有可以按如下方式使用的集合类中:

List<String> fruits = ArrayList.of("Apple", "Mango", "Guava");

IMO 这看起来和文字版本一样好,而且相当简洁。那么为什么他们必须发明一种新语法(编辑:"new"是指“Java 新手”。)?

  1. 当我说 List<String> fruits = [ "Apple", "Mango", "Guava" ];什么List我真的会得到吗?会不会是ArrayListLinkedList还是别的什么?

1 如评论中所述,集合文字没有在 Java 7 和 Java 8 中脱颖而出。(这是来自 Brian Goetz 的 email,一位 Oracle 开发人员,总结了不包含此功能的理由;这里是 proposal 本身。)

最佳答案

问题2的答案:

final List<Integer> piDigits = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 9];

给你一个不可变的列表。

这个提议的整个想法是子类型不能被指定。编译器根据右侧的集合选择合适的实现。

在此处阅读详细信息:Proposal: Collection Literals

问题 1 的答案:是的。这是风格问题。

关于java - 为什么要收集文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2700775/

相关文章:

java - 如何在 Java 中创建一个用于创建文本字段的 GUI 按钮?

scala - 在 Scala 中表达单个元素的可迭代最惯用的方式是什么?

java - Java 7 中的正则表达式命名捕获组支持

java - Findbugs 给出 "Null pointer dereference of System.out",为什么?

arrays - 高效/并行在 Java <= 1.7 中对数组中的每个元素应用操作?

java - 在没有连字符的 Apache Commons CLI 中使用选项

java - MIDI 文件到 MIDI 事件

java - 如何使用JTable中结果集中的数据?

java - Java中的排序集合

collections - 自定义产品集合上的 Magento 分层导航