繁体   English   中英

检查类是否“尊重”接口而不实现它

[英]Check if class “respects” interface without implementing it

我想检查一个类是否实现了特定接口的所有方法而不直接实现它。

即考虑界面

public interface MyInterface {
    public String myMethod();
}

和以下类:

A实现了接口,因此myMethod方法也是如此

public class A implements MyInterface {
    public String myMethod() {
        return "something";
    }
}

B没有实现接口,但有方法myMethod

public class B {
    public String myMethod() {
        return "something else";
    }
}

所以MyInterface.class.isAssignableFrom(A.class); trueMyInterface.class.isAssignableFrom(B.class); false 我正在寻找一个为两个类返回true的方法。

使用反射,对于每个类,我可以遍历接口的方法并检查它是否在类中实现。 有更聪明的方法吗?

不,如果没有反思,你不能做到这一点。

和...

接口是合同

虽然您可能能够发现B确实具有与MyInterface名称相同的方法,但您无法判断它们是否实际执行相同的操作

通过实现接口(如B应该具有的),您不仅可以实现该接口的方法,还可以提交以预期方式提供结果 在这种情况下,使用具有相同参数的相同名称的方法将不起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM