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
を実装するクラスに制限したいのですが、クラスでは、この制限は必要ありません。Type
FaceImpl1
FaceImpl2
問題は、Java がこれを許可していないことです。これを行うには、2 つの異なるクラスをどのように実装すればよいでしょうか? または、これを行うためのより良い方法はありますか?