如何检查对象是不是实现了接口? [复制]
Posted
技术标签:
【中文标题】如何检查对象是不是实现了接口? [复制]【英文标题】:How to check if an object implements an interface? [duplicate]如何检查对象是否实现了接口? [复制] 【发布时间】:2012-04-27 07:07:12 【问题描述】:如何检查某个类是否实现了接口? 当有:
Character.Gorgon gor = new Character.Gorgon();
如何检查gor
是否实现Monster
接口?
public interface Monster
public int getLevel();
public int level = 1;
public class Character
public static class Gorgon extends Character implements Monster
public int level;
@Override
public int getLevel() return level;
public Gorgon()
type = "Gorgon";
Gorgon
中的 getLevel()
方法是否被正确覆盖,所以它可以返回新的 gor
创建的 level
?
【问题讨论】:
我认为你需要 instanceof 关键字。 【参考方案1】:举个例子
Character.Gorgon gor = new Character.Gorgon();
那就做吧
gor instanceof Monster
对于一个类实例做
Class<?> clazz = Character.Gorgon.class;
Monster.class.isAssignableFrom(clazz);
【讨论】:
方法参数public void doSomething([Object implements Serializable] param)
怎么样?正确的语法是什么?
是的,...isAssignableFrom()
,唯一能确定 Gorgonite 的方法就是怪物。【参考方案2】:
使用
if (gor instanceof Monster)
//...
【讨论】:
这个答案对于没有任何复杂内部类或那些东西的用户很有用。干得好。【参考方案3】:一般适用于任何类的AnInterface
和anInstance
:
AnInterface.class.isAssignableFrom(anInstance.getClass());
【讨论】:
【参考方案4】:如果你想要像public void doSomething([Object implements Serializable])
这样的方法,你可以像这样输入public void doSomething(Serializable serializableObject)
。您现在可以将任何实现 Serializable 的对象传递给它,但使用 serializableObject
您只能从 Serializable 接口访问对象中实现的方法。
【讨论】:
以上是关于如何检查对象是不是实现了接口? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何检查一个对象在 Python 中是不是可迭代? [复制]