如何基于Java中的超类填充子类的字段?

时间:2015-06-15 01:02:57

标签: 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和地址调用另一个rest端点并将组合数据作为CustomerSummary对象返回。

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

如何将客户对象的所有继承字段设置为与摘要对象相同?我无法投射,因为我将不得不向下投射并将遇到ClassCastException。

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

1 个答案:

答案 0 :(得分:3)

你可以制作一个"复制构造函数"

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

并从您的子类中调用

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

这样你就可以了

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