为什么没有使用varargs的List构造函数?

时间:2016-07-15 11:34:48

标签: java collections variadic-functions

为什么没有这样的东西?

public List<T>(T... args)

List<T> list = new List<T>(t1, t2, t3, t4);

我总是看到类似的东西:

List<T> list = Arrays.asList(new T[]{t1, t2, t3, t4});

1 个答案:

答案 0 :(得分:3)

我理解你的需要。我经常这样做。 这是JDK规范的选择。如果需要,可以创建自己的util类。

警告:new ArrayList()Arrays.asList(args)会在功能上返回两种截然不同的实现。

List myList = new ArrayList(Arrays.asList(t1, t2, t3, t4)); 返回由指定数组支持的固定大小的列表。这是一个包含许多不受支持的操作的列表的最小实现。 修改ArrayList的任何方法都会抛出UnsupportedOperationException。 因此,要创建经典Java的快捷方式,您应该编写

[{
  id: 1,
  title: 'Simple title1',
  content: 'Sample content...',
  permalink: 'simple-title1',
  author: 'Peter',
  datePublished: '2012-04-04'
 }, {
  id: 2,
  title: 'Simple title2',
  content: 'Sample content...',
  permalink: 'simple-title2',
  author: 'Peter',
  datePublished: '2012-05-04'
 }, {
   id: 3,
  title: 'Simple title3',
  content: 'Sample content...',
  permalink: 'simple-title3',
       author: 'Thomas',
  datePublished: '2012-06-04'
}]