これは私のコードです:
public interface InterfaceA<J>{
// …
}
public interface InterfaceB extends InterfaceA<String> {
// …
}
public interface InterfaceC extends InterfaceA<Long>{
// …
}
public class Creator<J, I extends InterfaceA<J>> {}
public abstract class Base<J, J1> implements InterfaceA<J> {
protected Creator<J, J1> creator;
protected Base() {
creator=ObjectCreator.createCreator();
}
}
public class Extension1 extends Base<Integer> implements InterfaceB {
// …
}
public class Extension2 extends Base<Double> implements InterfaceC {
// …
}
持っていたいExtension1
、持ってCreator<Integer, InterfaceB>
いExtension2
たいCreator<Double, interfaceC>
。パターンを見ますか?Creator<T1, T2>
ここT1
で、は直接の親のタイプであり、T2
は上記のクラスによって実装されるインターフェースです。これを行う方法はありますか?誰でもコードを教えてもらえますObjectCreator.createCreator()
か?
現在、私のコードは次のようになっています。
public class ObjectCreator {
public static <J, I extends InterfaceA<J>> Creator<J, I> createCreator() {
return new Creator();
}
}
コード全体でエラーが発生しました。私は本当に混乱しています。ここで何が欠けていますか?