このインターフェースは、フレームワークの一部として作成しました。
public interface CollectionFactory {
public <T> Collection<T> newCollection();
}
しかし、実装者がコレクションの返される型を定義できるようにして、次のようにキャストする必要がないようにしたい:
public interface CollectionFactory<C extends Collection> {
public C newCollection();
}
問題は、T で型安全性が失われることです。
public interface CollectionFactory<C extends Collection> {
public <T> C<T> newCollection();
}
そして、次のように T を事前に指定したくありません。
public interface CollectionFactory<T, C extends Collection<T>> {
public C newCollection();
}
私の知る限り、これは不可能です。
誰かが私を驚かせたいですか?
また、前菜として、これに似たものがたとえば… Scalaで可能かどうか知っている人はいますか?