哪个选项最好,为什么?
的声明
1)List<Employee> employees = Lists.<Employee>newArrayList();
或者
2)List<Employee> employees = Lists.newArrayList();
我正在使用 com.google.common.collect.Lists 创建列表实例
哪个选项最好,为什么?
的声明
1)List<Employee> employees = Lists.<Employee>newArrayList();
或者
2)List<Employee> employees = Lists.newArrayList();
我正在使用 com.google.common.collect.Lists 创建列表实例
你可以看看实现:
public static <E> ArrayList<E> newArrayList() {
return new ArrayList<E>();
}
所以返回列表被隐式转换为预期的类型。仍然存在编译器不够聪明而无法确定预期类型的情况,即该方法用作另一个方法的参数时。例如:
public void foo( List<Employee> employees ) {/*do something*/}
当您调用 foo 时,只有第一个语法或显式转换会编译:
foo(Lists.<Employee>newArrayList());
您应该使用第二个选项,因为第一个选项会给出警告,“可以推断出显式类型参数”。这对我来说是一个足够好的理由,我不喜欢我的代码中的警告。
如果该警告对您没有意义,它是在说:“由于您List<Employee>
在左侧有 a,我已经知道您要在右侧返回什么,因此您不必明确地说出来。”