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()オーバーライドされているので、新しく作成されたものを返すことができますか?Gorgonlevelgor

4

4 に答える 4

240

インスタンスの場合

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

それからする

gor instanceof Monster

クラスインスタンスの場合

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

一般にAnInterfaceanInstanceあらゆるクラスの場合:

AnInterface.class.isAssignableFrom(anInstance.getClass());
于 2016-04-18T06:43:43.153 に答える