问题
如何检查某些类是否实现了接口?当有:
Character.Gorgon gor = new Character.Gorgon();
如何检查ifgor
implementsMonster
接口?
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()
是否正确地在79868670中被覆盖,所以它可以返回level
的newgor
创建?
#1 热门回答(186 赞)
例如
Character.Gorgon gor = new Character.Gorgon();
然后做
gor instanceof Monster
对于Class实例
Class<?> clazz = Character.Gorgon.class;
Monster.class.isAssignableFrom(clazz);
#2 热门回答(32 赞)
使用
if (gor instanceof Monster) {
//...
}
#3 热门回答(11 赞)
一般来说,对于任何类别的AnInterface
和anInstance
:
AnInterface.class.isAssignableFrom(anInstance.getClass());