如何检查对象是否实现了接口?

J.O*_*sen 115 java oop interface

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

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";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该方法是否getLevel()Gorgon正确覆盖,因此它可以返回levelgor创建的?

Mik*_*e Q 208

例如

Character.Gorgon gor = new Character.Gorgon();
Run Code Online (Sandbox Code Playgroud)

然后做

gor instanceof Monster
Run Code Online (Sandbox Code Playgroud)

对于Class实例来说

Class<?> clazz = Character.Gorgon.class;
Monster.class.isAssignableFrom(clazz);
Run Code Online (Sandbox Code Playgroud)


kro*_*ock 40

使用

if (gor instanceof Monster) {
    //...
}
Run Code Online (Sandbox Code Playgroud)


Ole*_*lov 15

通常,对于AnInterfaceanInstance任何类的:

AnInterface.class.isAssignableFrom(anInstance.getClass());
Run Code Online (Sandbox Code Playgroud)