之前可能已经提出过这个问题,但快速搜索只会提出与C#相同的问题.看这里.
我基本上想要做的是检查给定对象是否实现了给定的接口.
我有点想出了一个解决方案,但是在if或case语句中经常使用它并不够舒服,我想知道Java没有内置的解决方案.
public static Boolean implementsInterface(Object object, Class interf){
for (Class c : object.getClass().getInterfaces()) {
if (c.equals(interf)) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我几乎是java初学者,我来问stackoverflow论坛一个简单的问题.我已经在SO上检查了类似的问题,但是我没有找到想要的答案,LINK:实现接口的类和那个接口之间有什么关系吗?
我们知道Cat是否扩展了Animal,这里有一种关系.所以猫是动物(但不一定是动物.动物也是狗......).我们知道这种关系是"是 - " - 继承.
如果我们还有另外两个班级:Girl和Candy,如果班级Girl持有Candy的实例,那么我们将这种关系命名为"has-a" - 组合,因为我们可以说Girls有一个糖果.
如果我上面的例子弄错了,请纠正我.
无论如何,我的问题是它是否在实现相同接口的类的对象之间存在某种关系?让我们说:
public class A implements InterfaceA {}
public class B implements InterfaceA {}
Run Code Online (Sandbox Code Playgroud)
如果有某种关系,我们如何利用这种关系?感谢您提前的答案..
编辑:对于那些认为没有关系的人,我有一本书"java如何编程第九版",并且有一个UML图表显示在"关系"中实现相同界面的类?
图片:
