これは私のコードです:
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();
}
}
コード全体でエラーが発生しました。私は本当に混乱しています。ここで何が欠けていますか?