我有超级班以下。
SuperOne.java
public class SuperOne{
private String id;
private String name;
//public setter and getter methods
}
SubOne.java
public class SubOne extends SuperOne{
//To Do : SubOne has no extra fields.
}
我有以下方法:
public SubOne getData(String id){
SuperOne data = someDao.getData(String id)
// Now we have result in data . Now i need to convert data into SubOne and return.
}
SuperOne.java没有构造函数,由无法修改的第三方提供。但是我可以修改SubOne,因为它是我自己的。
请向我建议将SuperOne转换为SubOne的最佳方法。
最佳答案
您可以将SubOne
用作包装器,而不是将其用作子容器。
class SubOne {
private SuperOne superOne;
public SubOne(SuperOne) {
this.superOne = superOne;
}
public String getId() {
return this.superOne.getId();
}
public String getName() {
return this.superOne.getName();
}
public String setId(String id) {
return this.superOne.setId(id);
}
public String setName(String name) {
return this.superOne.setName(name);
}
///////////////
public SubOne getData(String id){
SuperOne data = someDao.getData(String id)
return new SubOne(data);
}
附录
如果您坚持继承
SuperOne
,则可以这样做。class SubOne extends SuperOne {
public SubOne(SuperOne superOne) {
super.setId(superOne.getId());
super.setName(superOne.getName());
}