2008-10-08 7 views
4

Je viens de remarquer que java.beans.Introspector getBeanInfo ne récupère pas les propriétés d'une superinterface. Exemple:java.beans.Introspector getBeanInfo ne récupère pas les propriétés d'une superinterface

public interface Person { 
    String getName(); 
} 
public interface Employee extends Person { 
    int getSalary(); 
} 

L'introspection sur l'employé ne génère qu'un salaire, même si le nom est hérité de la personne.

Pourquoi est-ce? Je préférerais ne pas avoir à utiliser la réflexion pour obtenir tous les getters.

Répondre

1

Essayez d'utiliser

public static BeanInfo getBeanInfo(Class<?> beanClass, Introspector.USE_ALL_BEANINFO); 

et voir si cela donne le résultat que vous recherchez.

+0

J'ai essayé cela et cela n'a pas fonctionné. Ma solution était d'introspecter la superclasse et les interfaces parents en appelant getInterfaces() et getSuperclass() de la classe. –

+0

Voulez-vous seulement les propriétés? Vous pouvez obtenir les descripteurs de propriétés de BeanInfo, je crois qu'il contient toutes les propriétés, y compris celles des superclasses. – MetroidFan2002

0

Dans ce cas, vous devez écrire une classe BeanInfo personnalisée.

+0

Notez que vous devrez définir getAdditionalBeanInfo() si vous avez défini un BeanInfo personnalisé –

3

La machine virtuelle Java ne supporte pas de la boîte comme écrit Phil. J'ai également besoin de cela et mis en œuvre un helper class dans le cadre de Diergo Utils 1.5.

Questions connexes