问题

如何检查某些类是否实现了接口?当有:

Character.Gorgon gor = new Character.Gorgon();

如何检查ifgorimplementsMonster接口?

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 赞)

一般来说,对于任何类别的AnInterfaceanInstance

AnInterface.class.isAssignableFrom(anInstance.getClass());

原文链接