我想检查一个类是否实现了特定接口的所有方法而没有直接实现它。
即。考虑接口
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);
为true
而MyInterface.class.isAssignableFrom(B.class);
为false
。我正在寻找一个对两个类都返回true的方法。
使用反射,对于每个类,我可以遍历接口的方法并检查它是否在类中实现。有更聪明的方法吗?
答案 0 :(得分:2)
如果没有反思,你不能做到这一点。
和...
接口是合同
虽然你可能会发现B确实有与MyInterface
中的名称相同的方法,但你无法判断它们是否真的做同样的事情
通过实现接口(如B应该具有的),您不仅可以实现该接口的方法,还可以以提供的方式提交结果。在这种情况下,使用具有相同参数的相同名称的方法将无法做到。