web-dev-qa-db-ja.com

オブジェクトがインターフェイスを実装しているかどうかを確認する方法は?

いくつかのクラスがインターフェイスを実装しているかどうかを確認する方法は?持っているとき:

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

gorMonsterインターフェイスを実装しているかどうかを確認する方法は?

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を返すことができますか?

112
J.Olufsen

インスタンスの

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

それから

gor instanceof Monster

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

Class<?> clazz = Character.Gorgon.class;
Monster.class.isAssignableFrom(clazz);
205
Mike Q

つかいます

if (gor instanceof Monster) {
    //...
}
39
krock

一般に、任意のクラスのAnInterfaceおよびanInstanceの場合:

AnInterface.class.isAssignableFrom(anInstance.getClass());
14
Oleg Mikhailov

public void doSomething([Object implements Serializable])のようなメソッドが必要な場合は、このpublic void doSomething(Serializable serializableObject)のように入力するだけです。これで、Serializableを実装するオブジェクトを渡すことができますが、serializableObjectを使用すると、Serializableインターフェイスからオブジェクトに実装されたメソッドにのみアクセスできます。

1
BananyaDev