考えてみてくださいCollections.emptyList()
。返されるリストオブジェクトは常に同じです。リストは空で不変であるため、typeパラメータの代わりに使用される具象型に応じて異なる動作を示すために、返されるオブジェクトに対して呼び出し元ができることは何もありません。したがって、(rawタイプを使用した)単一の実装で十分です。
public static <T> List<T> emptyList() {
return THEEMPTYLIST;
}
public static final List THEEMPTYLIST = new List() {
public int size() { return 0; }
...
};
ただし、このemptyList
メソッドは型推論を可能にするため、呼び出し元にとってこれをより便利にします。
List<String> noStrings = Collections.EMPTY; // Gives compiler warning due to use of raw types
List<String> noStrings2 = Collections.emptyList(); // No compiler warning, type parameter inferred.