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

时间:2012-04-15 20:40:53

标签: 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";
        }
    }
}

方法getLevel()是否已正确覆盖Gorgon,因此它可以返回level个新gor创建的内容?

4 个答案:

答案 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)

通常适用于任何类别的AnInterfaceanInstance

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

答案 3 :(得分:1)

如果你想要像public void doSomething([Object implements Serializable])这样的方法,你可以像public void doSomething(Serializable serializableObject)一样输入它。您现在可以将任何实现Serializable的对象传递给它,但使用serializableObject您只能访问Serializable接口中对象中实现的方法。