2013-04-24 59 views
0

让我知道如果我错了,但以我的经验来说,instanceof调用没有做到我需要的。确定一个类的超类是否实现了java中的某个接口

我有一个抽象类,它实现了一个接口并显式覆盖了接口中的所有方法。我有这个类的一个子类。我如何知道子类是否是接口的一个实例?

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 
    } 
} 

所以,我有小猎犬的一个实例,如何才能知道它是否是IAnimal的实例?

+5

一个

IAnimal.class.isAssignableFrom(Beagle.class) 

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

甚至实例'instanceof'是你在找什么。你为什么认为它没有做你想要的? – jtahlborn 2013-04-24 00:42:50

+0

你有与我不同的经历。 – 2013-04-24 00:44:09

+0

你可以调用object.getSuperclass()。getInterfaces(),但instanceof应该足够了 – 2013-04-24 00:45:46

回答

1

你可以做的作品与接口

if (object instanceof IAnimal) { } 
相关问题