Copie POJO contenu à partir d'un grain à un autre
J'ai quelques objets Pojo dans les différents paquets, chaque POJO contient de l'autre pojo de la même package. J'ai besoin de copier tous les éléments ayant le même nom de Paquet B Pojo à des objets dans le Package A.
Eaxmple:
package com.vanilla.packageA;
public class Student{
private String firstName;
private String lastName;
private Set<Course> course;
//getters and setters ommited
}
package com.vanilla.packageA;
public class Course{
private String courseName;
private String courseDescription;
//seters and getters
}
package com.vanilla.packageB;
public class Student{
private String firstName;
private String lastName;
private Address address;
private Set<Course> course;
Private Date birtday;
//getters and setters ommited
}
package com.vanilla.packageB;
public class Course{
private String courseName;
private String courseDescription;
private <Lecturer> lecturer;
private Integer hours;
//seters and getters
}
Je veux copier récursivement tous les éléments de PackageB
classes de packageA
classes qui existe dans PaCkageB
et partage le même nom.
Mises à jour:
Les gars, je comprends qu'il est question stupide, mais j'ai besoin de maintenir ce code, le code est écrit dans la façon qu'ils ont d'appeler 50 getters et de définition, ou en appelant le constructeur de 50 paramètres.
Malheureusement, je ne peux pas utiliser le même objet et j'ai besoin de le copier, mais il faut que je trouve plus "élégant" pour copier le tese haricots.
J'ai getters et setters, donc je peux l'utiliser.
Je dirais que vous avez un POJO ou un Haricot. "POJO est un acronyme pour" Plain Old Java Object. Le nom est utilisé pour souligner qu'un objet est une instance d'Objet en Java, pas un objet spécial, et en particulier pas un Enterprise JavaBean. " de l'article de wikipédia de POJO
Si vous n'avez pas besoin d'accéder à portée de package choses, alors pourquoi ne pas simplement utiliser les classes du paquet B? Il n'y a aucune raison pourquoi vous devez les classes dans le package A.
Merci de voir mon jour, il l'expliquera plus.
OriginalL'auteur danny.lesnik | 2011-05-09
Vous devez vous connecter pour publier un commentaire.
Aucune raison de Apache BeanUtils.copyProperties ne fonctionne pas?
En fait, il ne le travail, à condition de classe sont identiques getters et setters.
BeanUtils de ne pas faire de copie en profondeur. Tellement imbriquées les haricots etc ne fonctionne pas (bizarrement).
Beanutils a des tiers en question, connaissez-vous d'autres alternatives?
OriginalL'auteur Rosdi Kasim
Bien.. Dozer peut être juste la chose que vous cherchez.
. . . c'est un objet à un framework de mapping. L'idée est que:
. . par conséquent fichiers de mappage sont aussi compact que possible. Il est utile pour de nombreux cas, tels que l'association d'un cas d'utilisation de spécifier le service de la charge utile sur le réutilisables modèle de base des objets.
Lors de la livraison de la SpringSource cours de formation nous permettent de mettre en évidence ce cadre très souvent.
OriginalL'auteur flo
Voir à mapstruct. Cet outil génère un code, donc il n'y a pas de frais généraux sur la réflexion.
OriginalL'auteur FeelGood
Copie des champs de valeurs sont un ai-je besoin de presque tous les projets, par exemple pour faire le clone(). Je pense aussi que pour accomplir certains objectifs n'est pas nécessaire d'importation .les pots à l'aide d'une seule fonction. Je voudrais partager un peu de code dans lequel je travaillais, il ya certaines choses que j'ai laissé dans l'encrier, mais en général il ne le travail. Dans ce cas, j'utilise la réflexion.
Espérons que cette aide.
OriginalL'auteur Luis Carlos
Si SEC est un principe fondamental de l'informatique, quelle raison pouvez-vous donner pour deux identiques, en parallèle de graphes d'objets? Non seulement vous avez doublé votre fardeau de l'entretien, mais maintenant vous avez à développer une méthode récursive de ne rien faire mais de ferry de données de l'un à l'autre.
Vous avez ma sympathie.
Par exemple, le code généré par les services web. Dans mon code je demande un objet par ID à l'aide de getCustomerById() et ensuite de le mettre à jour je dois faire un appel à setCustomer(CustomerUpdateRequest). getCustomerId renvoie une CustomerResponse - tous les champs à l'intérieur sont des Chaînes de caractères/ints/longs, ou des choses comme AddressResponse. Le CustomerUpdateRequest contient des Chaînes/ints/longs et AddressRequest, mais tous les noms de champ sont les mêmes, ad vitam aeternam!
OriginalL'auteur duffymo