0

私が間違っているかどうか教えてください。しかし、私の経験では、instanceof 呼び出しは必要なことを実行しません。

インターフェイスを実装し、インターフェイス内のすべてのメソッドを明示的に上書きする抽象クラスがあります。このクラスのサブクラスがあります。サブクラスがインターフェイスのインスタンスであるかどうかを確認するにはどうすればよいですか?

public interface IAnimal {
    public void eat();
}

public abstract class Dog implements IAnimal {
    @Override
    public void eat(){
        //eat things
    }

    public abstract void bark();
}

public class Beagle extends Dog {
    @Override
    public void bark(){
        //specific bark
    }
}

Beagle のインスタンス化がありますが、それが IAnimal のインスタンスであるかどうかを確認するにはどうすればよいですか?

4

1 に答える 1

1

あなたはすることができます

IAnimal.class.isAssignableFrom(Beagle.class)

また

IAnimal.class.isAssignableFrom(someObjectInstance.getClass());

またはインターフェイスを使用した作品のインスタンス

if (object instanceof IAnimal) { }
于 2013-04-24T00:46:13.993 に答える