java - Java中如何根据父类(super class)填充子类的字段?

标签 java inheritance casting

我有一个基摘要类如下:

public Class Summary{
    private String name;
    private String status;
    private String id;

// Getters and setters
}

然后我扩展了这个类来获取客户摘要:

public Class CustomerSummary extends Summary{
    private String lastLogin;
    private String address;

// Getters and setters
}

现在我正在调用一个 Rest 端点,它将响应映射到 Summary 对象。然后,我需要设置调用另一个休息端点的 lastLogin 和地址,并将组合数据作为 CustomerSummary 对象返回。

Summary summary = restClient.getStatus("1234");
CustomerSummary customer = new CustomerSummary()

如何将客户对象的所有继承字段设置为与汇总对象相同?我无法进行强制转换,因为我必须向下强制转换并且会遇到 ClassCastException。

我可能有 10 个字段,因此为摘要对象的所有字段调用客户对象的 setter 将导致大量重复代码。有更聪明的方法来处理这个问题吗?

最佳答案

你可以创建一个“复制构造函数”

protected Summary(Summary template){
   this.name = template.name;
   // ....
}

并从您的子类中调用它

CustomerSummary(Summary template){
    super(template);
}

这样你就可以做到

Summary summary = restClient.getStatus("1234");
CustomerSummary customer = new CustomerSummary(summary);

关于java - Java中如何根据父类(super class)填充子类的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30836111/

相关文章:

c++ - 我如何转换模板类

objective-c - 为什么 (int)[ @"-1"floatValue] 不返回 -1

java - 允许jar中的两个库使用依赖java的两个不同版本

java - 立即获得命令提示符输出?

multithreading - TThread与继承

ruby-on-rails - 实现抽象基模型类,Rails Way™

具有泛型和协变返回的 Java 并行继承层次结构

在 c 中将数组转换为结构体,反之亦然

Android 的幻灯片菜单库的 Java 实现

java - com.microsoft.sqlserver.jdbc.SQLServerDriver 的 ClassNotFoundException