最初のケースでは、特定の型をインスタンス化する必要があります。2 番目では、返す型を決定するのは実装者に任せます。
私は Bitmap に詳しくありませんが、別の例として EnumSet があります。電話すると:
EnumSet<SomeEnum> set = EnumSet.noneOf(SomeEnum.class);
静的ファクトリ メソッドは、すべての状況で可能な限り効率的になるように、列挙型のアイテムの数に応じて異なる実装を使用します。
基になるコードは、RegularEnumSet
小さな列挙型の場合またはJumboEnumSet
大きな列挙型の場合のいずれかを返します。この種のコンテキスト最適化は、コンストラクターでは不可能です。
public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType) {
Enum[] universe = getUniverse(elementType);
if (universe == null)
throw new ClassCastException(elementType + " not an enum");
if (universe.length <= 64)
return new RegularEnumSet<>(elementType, universe);
else
return new JumboEnumSet<>(elementType, universe);
}