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

时间:2015-12-18 11:39:16

标签: java interface

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

即。考虑接口

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的方法。

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

1 个答案:

答案 0 :(得分:2)

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

和...

接口是合同

虽然你可能会发现B确实有与MyInterface中的名称相同的方法,但你无法判断它们是否真的做同样的事情

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