いくつかのクラスがインターフェイスを実装しているかどうかを確認する方法は?持っているとき:
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
を返すことができますか?
インスタンスの
Character.Gorgon gor = new Character.Gorgon();
それから
gor instanceof Monster
クラスインスタンスの場合
Class<?> clazz = Character.Gorgon.class;
Monster.class.isAssignableFrom(clazz);
つかいます
if (gor instanceof Monster) {
//...
}
一般に、任意のクラスのAnInterface
およびanInstance
の場合:
AnInterface.class.isAssignableFrom(anInstance.getClass());
public void doSomething([Object implements Serializable])
のようなメソッドが必要な場合は、このpublic void doSomething(Serializable serializableObject)
のように入力するだけです。これで、Serializableを実装するオブジェクトを渡すことができますが、serializableObject
を使用すると、Serializableインターフェイスからオブジェクトに実装されたメソッドにのみアクセスできます。