どのオプションが最適で、その理由は?
の宣言
1)List<Employee> employees = Lists.<Employee>newArrayList();
また
2)List<Employee> employees = Lists.newArrayList();
Lists インスタンスを作成するために com.google.common.collect.Lists を利用しています
どのオプションが最適で、その理由は?
の宣言
1)List<Employee> employees = Lists.<Employee>newArrayList();
また
2)List<Employee> employees = Lists.newArrayList();
Lists インスタンスを作成するために 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());
You should use the second option because the first one will give a warning saying, "Explicit type arguments can be inferred". That's a good enough reason for me, I don't like warnings in my code.
If that warning doesn't make sense to you, it's saying, "Since you have a List<Employee>
on the left hand side, I already know what you're trying to return on the right hand side so you don't have to explicitly say it."