Comment vérifier si un object implémente une interface?

Comment vérifier si une classe implémente une interface? En ayant:

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

comment vérifier si gor implémente l’interface 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"; } } } 

La méthode getLevel() remplacée correctement dans Gorgon , de sorte qu’elle peut renvoyer le level du nouveau gor créé?

Pour une instance

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

Alors fais

 gor instanceof Monster 

Pour une instance de classe

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

Utilisation

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

En général pour AnInterface et anInstance de toute classe:

 AnInterface.class.isAssignableFrom(anInstance.getClass()); 

Si vous voulez une méthode comme public void doSomething([Object implements Serializable]) vous pouvez simplement le taper comme ce public void doSomething(Serializable serializableObject) . Vous pouvez maintenant lui transmettre tout object qui implémente Serializable, mais à l’aide de serializableObject vous avez uniquement access aux méthodes implémentées dans l’object depuis l’interface Serializable.