我将Face接口定义如下:
public interface Face {
<R> LoadBalancer<R> create(List<R> resources);
}
然后是另一个接口Type
和两个实现该Face
接口的类。
public interface Type{}
这是Face
名为FaceImpl1的接口的第一个实现。
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 不允许这样做。那么为了做到这一点,我应该如何实现这两个不同的类呢?或者有更好的方法来做到这一点?