Faceインターフェースを次のように定義しました。
public interface Face {
<R> LoadBalancer<R> create(List<R> resources);
}
次に、別のインターフェイスTypeと、インターフェイスを実装する 2 つのクラスFace。
public interface Type{}
これは、FaceImpl1Face という名前のインターフェースの最初の実装です。
public class FaceImpl implements Face {
@Override
public <R extends Type> create<R> newLoadBalancer(List<R> resources) {
return new SomeObject<R>(resources).
}
}
さらに別の実装FaceImpl2
public class FaceImpl2 implements Face {
@Override
public <R> create<R> create(List<R> resources) {
return new SomeObject2<R>(resources).
}
}
ご覧のとおり、ジェネリック型を でインターフェイスRを実装するクラスに制限したいのですが、クラスでは、この制限は必要ありません。TypeFaceImpl1FaceImpl2
問題は、Java がこれを許可していないことです。これを行うには、2 つの異なるクラスをどのように実装すればよいでしょうか? または、これを行うためのより良い方法はありますか?