我试图找到一种方法来创建一个接口/抽象方法,并将声明/扩展类作为返回类型。(例如classA 扩展了interfaceA,并且该方法应该返回一个ClassA 对象)。
现在我发现一些帖子编译器不会抱怨这样的事情,但是 JVM 无法处理这样的事情,这意味着这个机制在 java 中不存在。
所以我想出了以下想法,我不知道它在技术上是否足够节省。(例如它会导致循环)
public interface ISomeInterface<T extends ISomeInterface<T>> {
public T get();
}
这意味着您可以以这种方式使用它。虽然这不会强制外部用户使用扩展类,但如果愿意,它至少提供了这样做的机会:
public class ExtendingClass implements ISomeInterface<ExtendingClass>{
@Override
public ExtendingClass get(){}
}
现在这不会产生编译器或运行时错误,但我担心如果广泛使用这是否会产生任何问题。
如果有人能确认这会或不会导致问题,我将不胜感激。(也欢迎任何其他反馈)。