我想實現一種傳輸對象模式。所以,我有一個方法通過BeanUtils.copyProperties(..,..)(apache common)來填充對象的屬性。java通用演員問題
下面是代碼:
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類
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";
}
}
問題
CustomerTO toEdit = (CustomerTO) (customerId!=null ? new CustomerTO().build(entityObject):new CustomerTO());
,你可以在這裏看到要投給(CustomerTO)。如果可能的話,我希望避免這種情況,以使代碼更簡單。
public baseTO build(TObject entity)是否可以返回子類的對象?
我希望能夠清楚。
在此先感謝。
你是否因爲想跳過1次小演員而寫出所有這些? – toto2
@toto:我認爲這個問題不僅僅是關於轉換,而是關於編譯時類型檢查。 +1的問題。 –
@toto。不,我會在很多地方使用。 –