java - java中判断一个类的父类(super class)是否实现了某个接口(interface)

标签 java inheritance instanceof

如果我错了,请告诉我,但根据我的经验,instanceof 调用没有执行我需要的操作。

我有一个抽象类,它实现一个接口(interface)并显式覆盖该接口(interface)中的所有方法。我有这个类的一个子类。如何判断子类是否是接口(interface)的实例?

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 的实例?

最佳答案

你可以做

IAnimal.class.isAssignableFrom(Beagle.class)

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

甚至是使用接口(interface)的实例

if (object instanceof IAnimal) { }

关于java - java中判断一个类的父类(super class)是否实现了某个接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16181520/

相关文章:

java - 打印下面提到的数字模式的逻辑是什么

c++ - 在继承方面需要帮助

java - 当我在另一个静态类下使用静态类时验证 instanceof

java - 创建名称为 'Individual_Controller' : Injection of autowired dependencies failed; 的 bean 时出错

java - 使用Iterator的remove()方法从ArrayList中删除所有null

java - 一种从 Clojure 中的 java.io.File.listFiles 中剥离返回值的方法

继承属性类的 c# OO 建议

java - 如何重写父类的方法

java - 当派生类主要用于扩展状态而不是行为时,如何动态获取继承层次结构中的子类?

java - 如何让一个我无法更改的类实现一个接口(interface)?