タイプパラメータを持つクラスを初期化する際に問題が発生しました。これはJavaの型推論の欠点であると思われます。これを回避する方法やこれを実現する方法があるかどうかを知りたいと思います。タイプパラメータを持つJava発行初期化クラス
未定義です:コンストラクタサービス< ChildModel、ArrayListの< ChildModel >>(クラス< ChildModel>、クラス< ArrayListには>)
コンパイル時エラーがBusinessLogic::someLogic()
である
public class ParentModel {}
public class ChildModel extends ParentModel {}
public class Service<E extends ParentModel, T extends Collection<E>> {
private Class<T> classOfT;
private Class<E> classOfE;
public Service(Class<E> classOfE, Class<T> classOfT) {
this.classOfE = classOfE;
this.classOfT = classOfT;
}
}
public class BusinessLogic {
public void someLogic() {
Service<ChildModel, ArrayList<ChildModel>> service = new
Service<ChildModel, ArrayList<ChildModel>>(ChildModel.class, ArrayList.class);
}
}
Java 7にコンパイル。
「クラス」のフィールドやフィールドのタイプが「T」と「E」の場合はどうしたらいいですか? –