2012-04-15 72 views
88

如何检查一些类是否实现接口? 当具有:如何检查一个对象是否实现了一个接口?

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覆盖正确的,所以它可以返回的新gorlevel产生的?

+0

我认为你需要instanceof的关键字。 – 2012-04-15 20:43:57

回答

165

对于实例

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

然后做

gor instanceof Monster 

对于一个类的实例做

Class<?> clazz = Character.Gorgon.class; 
Monster.class.isAssignableFrom(clazz); 
+0

方法参数'public void doSomething([Object implements Serializable] param)'?什么是正确的语法? – 2015-03-26 00:35:42

+0

Yeh,'... isAssignableFrom()',确定Gorgonite的唯一方法是怪物。 – 2016-12-09 12:58:41

31

使用

if (gor instanceof Monster) { 
    //... 
} 
1

如果你想要一个像public void doSomething([Object implements Serializable])这样的方法,你可以像这样输入public void doSomething(Serializable serializableObject)。您现在可以将任何实现Serializable的对象传递给它,但使用serializableObject您只能访问Serializable接口中对象中实现的方法。

7

一般为AnInterface和任何类的anInstance

AnInterface.class.isAssignableFrom(anInstance.getClass()); 
相关问题