我有超级班以下。

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());
    }

10-07 16:58