[英]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);
是true
和MyInterface.class.isAssignableFrom(B.class);
是false
。 我正在寻找一个为两个类返回true的方法。
使用反射,对于每个类,我可以遍历接口的方法并检查它是否在类中实现。 有更聪明的方法吗?
不,如果没有反思,你不能做到这一点。
和...
接口是合同
虽然您可能能够发现B确实具有与MyInterface
名称相同的方法,但您无法判断它们是否实际执行相同的操作 。
通过实现接口(如B应该具有的),您不仅可以实现该接口的方法,还可以提交以预期方式提供结果 。 在这种情况下,使用具有相同参数的相同名称的方法将不起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.