142

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

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正确覆盖,所以它可以返回levelgor创建的?

4

4 回答 4

240

举个例子

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

然后做

gor instanceof Monster

对于一个 Class 实例做

Class<?> clazz = Character.Gorgon.class;
Monster.class.isAssignableFrom(clazz);
于 2012-04-15T20:43:05.633 回答
44

采用

if (gor instanceof Monster) {
    //...
}
于 2012-04-15T20:43:52.063 回答
27

一般来说,AnInterface对于anInstance任何类别:

AnInterface.class.isAssignableFrom(anInstance.getClass());
于 2016-04-18T06:43:43.153 回答
1

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

于 2015-12-06T11:57:51.307 回答