如何检查某些类是否实现了接口? 当有:
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";
}
}
}
方法getLevel()
是否已正确覆盖Gorgon
,因此它可以返回level
个新gor
创建的内容?
答案 0 :(得分:200)
对于实例
Character.Gorgon gor = new Character.Gorgon();
然后做
gor instanceof Monster
对于Class实例
Class<?> clazz = Character.Gorgon.class;
Monster.class.isAssignableFrom(clazz);
答案 1 :(得分:38)
使用
if (gor instanceof Monster) {
//...
}
答案 2 :(得分:13)
通常适用于任何类别的AnInterface
和anInstance
:
AnInterface.class.isAssignableFrom(anInstance.getClass());
答案 3 :(得分:1)
如果你想要像public void doSomething([Object implements Serializable])
这样的方法,你可以像public void doSomething(Serializable serializableObject)
一样输入它。您现在可以将任何实现Serializable的对象传递给它,但使用serializableObject
您只能访问Serializable接口中对象中实现的方法。