comment générique comparer toute la java beans?
J'ai essayé d'analyser le org.apache.commons.beanutils bibliothèque pour des de la méthode/de l'idiome à évaluer pour l'égalité tous de propriétés entre les 2 cas c'est à dire un générique de la méthode equals() pour les haricots.
Est-il une façon simple de le faire usnig cette bibliothèque? Ou suis-je les choses à ce sujet dans le mauvais sens?
Merci.
Le xtendbeans bibliothèque pourrait être d'intérêt dans ce contexte; voir l'exemple complet sur cette les autres DONC, la question.
OriginalL'auteur ysouter | 2009-01-23
Vous devez vous connecter pour publier un commentaire.
Essayer EqualsBuilder.reflectionEquals() de commons-lang. EqualsBuilder a un ensemble de méthodes pour inclure tous les champs, tous les non-transitoire champs et tout, mais certains champs.
Si tout le reste échoue, le code peut servir comme un bon exemple de comment le mettre en œuvre.
reflectionEquals
appelle justeequals
sur chaque propriété, il ne reflète pas dans la classe.mais attention sera récursive est égal à: Vous pouvez facilement être pris dans une boucle quand les haricots forme de cycles.
OriginalL'auteur Aaron Digulla
Pour répondre directement à votre question, vous pouvez utiliser la réflexion pour faire de l'égalité vérification de haricots. Il y a quelques obstacles que vous devez être conscient de.
Il y a des règles concernant le comportement de equals() et hashcode(). Ces règles de parler de la symétrie, de la constance et de la réflexivité qui peut être difficile à faire quand votre méthode equals se comporte de manière dynamique en fonction de l'autre objet que vous êtes de passage dans la.
Intéressant à lire:
http://www.geocities.com/technofundo/tech/java/equalhash.html
De façon générale, je pense que vous êtes mieux de la création de votre propre hashcode et equals méthodes. Il y a un forum de bons plugins qui permet de générer automatiquement le code pour vous sur la base des propriétés de la classe.
Ayant dit tout cela, voici quelques (vieux style) méthodes pour obtenir des getters, setters et les propriétés que j'ai écrit il y a longtemps:
Les Getters:
Et les Setters:
Peut-être que vous pouvez l'utiliser pour restaurer votre propre.
Edit: bien sûr le reflectionbuilder dans Aaron Digulla réponse est beaucoup mieux que mon bricolage.
OriginalL'auteur Rolf
Comme mentionné ci-dessus, une réflexion basée sur la mise en œuvre permettra de faire ce que vous voulez. Je voulais juste vous avertir, que la réflexion est assez coûteux et une telle mise en œuvre pourrait être comparable lent. Si vous avez juste besoin de faire occasionnellement des comparaisons, vous serez amende. Toutefois, si vous avez d'énormes ensembles de données et de fréquents contrôles d'égalité (par exemple, le filtrage des grandes tables), vous pourriez avoir des ennuis.
OriginalL'auteur Rahel Lüthy
Ou, bien que n'étant pas une réponse directe à votre question, mais il pourrait être la réponse à votre problème (c'est à dire enlever l'effort de faire du code réutilisable tout être super rapide)
si vous utilisez Eclipse, la procédure suivante va automatiquement générer le hashCode et equals pour vous:
Source > Générer hashCode et equals...
puis sélectionnez les champs, c'est super efficace! 😀
Encouragements et j'espère que cela aide celui qui vient ici dans le but de couper un peu de temps à écrire standard.
PS: je suis sûr que d'autres populaires IDEs doivent avoir des caractéristiques similaires.
OriginalL'auteur João Antunes