Tag: method signature

接口如何包含在其签名或返回类型中引用接口的具体实现类型的方法?

假设我正在设计类似以下界面: public interface MyInterface{ public MyInterface method1(); public void method2(MyInterface mi); } 但是,需要注意的是, method1的返回类型和method2的参数与具体实现相匹配,而不仅仅是MyInterface 。 也就是说,如果我有实现MyInterface ,它需要具有以下内容: public class MyInterfaceImpl implements MyInterface{ @Override public MyInterfaceImpl method1(){…} @Override public void method2(MyInterfaceImpl mi){…} } 如上所述, method1不会导致任何编译错误,但没有任何保证返回类型在所有实现中都匹配。 当然, method2甚至不会编译,因为签名与接口不匹配。 一个候选解决方案是在generics中使用自引用或递归边界: public interface MyInterface<T extends MyInterface>{ public T method1(); public void method2(T mi); } public class MyInterfaceImpl implements MyInterface{ […]