java - 将值从父类(super class)复制到子类

标签 java java-ee-6

我有以下父类(super class)。

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

关于java - 将值从父类(super class)复制到子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20043244/

相关文章:

java - 从 Servlet 远程查找另一个 Glassfish

java - 将 xml 转换为 csv

java - Datastax Java 驱动程序可为 null=false

java - Android 要求编译器合规级别为 5.0 或 6.0。而是找到了 '1.7'。请使用 Android 工具 > 修复项目属性

java - 有没有更好的方法将变量传递到我的 View ?

java - CDI 和 EJB 如何比较?互动?

java-ee-6 - 如何取消或删除 Persistent EJBTimers

java - 空数据库列在结果集上变为零

java - 如何在 Spring Boot 中注册和使用 jackson AfterburnerModule?

java - 如果没有 Web 层并因此没有 HTTP session ,CDI 是否有意义?