2

哪个选项最好,为什么?

的声明

1)List<Employee> employees = Lists.<Employee>newArrayList();

或者

2)List<Employee> employees = Lists.newArrayList();

我正在使用 com.google.common.collect.Lists 创建列表实例

4

2 回答 2

1

你可以看看实现:

public static <E> ArrayList<E> newArrayList() {
  return new ArrayList<E>();
}

所以返回列表被隐式转换为预期的类型。仍然存在编译器不够聪明而无法确定预期类型的​​情况,即该方法用作另一个方法的参数时。例如:

public void foo( List<Employee> employees ) {/*do something*/}

当您调用 foo 时,只有第一个语法或显式转换会编译:

foo(Lists.<Employee>newArrayList());
于 2013-07-08T23:02:44.343 回答
0

您应该使用第二个选项,因为第一个选项会给出警告,“可以推断出显式类型参数”。这对我来说是一个足够好的理由,我不喜欢我的代码中的警告。

如果该警告对您没有意义,它是在说:“由于您List<Employee>在左侧有 a,我已经知道您要在右侧返回什么,因此您不必明确地说出来。”

于 2013-07-08T22:53:43.570 回答