réflexion java pour créer le champ/valeur hashmap
J'ai besoin de créer une table de hachage de champs/valeurs contenues dans une Entité, donc je peux peut les utiliser pour les remplacer dans une Chaîne de caractères contenant des étiquettes avec les noms de champ.
J'ai ce code:
public static String replaceTags(String message, Map<String, String> tags) ...
Qui remplace tous les tags trouvé dans message pour les valeurs équivalentes en tags, mais dans le but de construire la table de j'ai besoin de prendre "toute" Entité et être en mesure de créer une Carte à partir de l'Entité. Alors, comment ai-je pu rendre cela possible? pour obtenir une routine où je envoyer de l'Entité et de se retourner une Carte avec tous les champs et les valeurs.
public static Map<String, String> getMapFromEntity(Object entity){
Map<String, String> map = new HashMap<String, String>();
...?????
return map;
}
Je sais que je pourrais utiliser la réflexion et c'est la seule approche que j'ai trouvé pour obtenir ce fait, mais il n'existe aucune autre façon d'accomplir la même chose?, Je veux dire d'une façon plus efficace.
Grâce.
Oui @aishwarya, l'entité peut contenir tout type de données de sorte que la réflexion est la seule façon, merci.
Dup de stackoverflow.com/questions/6796187/...
OriginalL'auteur Joe Almore | 2011-11-29
Vous devez vous connecter pour publier un commentaire.
O, et votre entité doit être un objet de votre classe, pas votre classe elle-même.
Si vos champs sont privés et que vous avez des getters pour eux, vous devez utiliser getMethods() et vérifier si le nom de la méthode commence par "get" préfixe.Comme ceci:
les accesseurs pour les booléens peuvent commencer par "est" ;-). il est généralement plus facile d'obtenir la valeur de champs directement après le réglage accessible vrai, mais vous pourriez faire des méthodes de trop.
OriginalL'auteur shift66
Autant que je sache, la réflexion est la seule façon d'y parvenir, à moins que les classe(s) vous souhaitez créer la carte à partir d'implémenter une interface, et de votre code d'extraction de la carte est au courant de cette interface.
OriginalL'auteur esaj
Si tout ce que vous voulez sortir de cette carte, pourquoi ne pas utiliser un littéraire comme Jackson, alors vous pouvez convertir simplement comme ceci
Map map = new ObjectMapper().convertValue(object, Map.class);
OriginalL'auteur Tao Zhang