在 Java 中覆盖方法可以缩小返回类型。
但是否有可能在申报期间强制缩小范围?
例如,这在模式中可能很好,其中内部类与外部类同时被子类化:
public class Try_ForceNarrow {
public interface IMember {
}
public interface Container<M extends IMember> {
M createMember();
}
public static class A implements Container<A.Member> {
@Override
public Member createMember() {
return new Member();
}
public class Member implements IMember {
}
}
public static class B extends A implements Container<B.Member> {
@Override
public Member createMember() {
return new Member();
}
public class Member extends A.Member {
}
}
public static void main(String[] args) {
}
}
此代码编译失败,出现错误“接口(interface)容器不能用不同的参数实现多次”。
如何避免这种情况?
当然可以写
public static class B extends A {
@Override
public Member createMember() {
return new Member();
}
public class Member extends A.Member {
}
}
但这样我就可以忘记覆盖 createMember()
并违反模式。
最佳答案
那A<T> implements Container<T>
呢? ?您可以根据需要进一步限制 T...
关于java - 在 Java 中强制返回类型缩小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27989729/