Je veux implémenter une sorte de modèle d'objet de transfert. Donc, j'ai une méthode qui remplit les propriétés de l'objet via BeanUtils.copyProperties (.., ..) (apache common).java générique cast question
Voici le code:
public abstract class BaseTO<TObject> {
public Long id;
/***
* Obtains id of the object that´s transfered
* @return object´s id
*/
public Long getId() {
return id;
}
/****
* set transfered object´s id
* @param id object´s id
*/
public void setId(Long id) {
this.id = id;
}
/***
* Fill transfer object properties.
* @param entity entity to be transfered
* @return self reference
*/
public BaseTO<TObject> build(TObject entity){
try {
BeanUtils.copyProperties(this, entity);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
customDataTransformation(entity);
return this;
}
protected void customDataTransformation(TObject entity) {
}
}
CustomerTO Classe
public class CustomerTO extends BaseTO<Customer> {
private String name;
private String surname;
private String email;
private String sex;
private DocumentType documentType;
private String documentNumber;
--- getters and setters
@Override
protected void customDataTransformation(Customer entity) {
this.sex = Sex.MALE.equals(entity.getSex()) ? "M" : "F";
}
}
le problème
CustomerTO toEdit = (CustomerTO) (customerId!=null ? new CustomerTO().build(entityObject):new CustomerTO());
comme vous pouvez le voir ici doivent jeter à (CustomerTO). Je veux si c'est possible éviter cela, pour rendre le code plus simple.
Est-il possible que public BaseTO build (entité TObject) peut renvoyer l'objet de la sous-classe?
J'espère être clair.
Merci d'avance.
Avez-vous écrit tout cela juste parce que vous voulez passer 1 petite distribution? – toto2
@toto: Je pense que la question n'est pas seulement une question de casting, mais aussi une question de vérification de type à la compilation. +1 à la question –
@toto. Non, je vais utiliser dans beaucoup d'endroits. –