gpt4 book ai didi

java - 在 Java 类中共享公共(public)变量

转载 作者:行者123 更新时间:2023-12-01 22:08:48 24 4
gpt4 key购买 nike

以下问题可能太天真,但请帮我找到解决方案。

我正在开发 Java RESTful API,我以 JSON 格式发送响应格式。由于需要设计多个 API,我想到将一些公共(public)变量保留在抽象类中并尽可能重用。下面是我设计的2个抽象类。

public @Data abstract class AbstractEntityWebServResDTO<D> {

// Attributes
//////////////
protected Date createdDt;
protected String createdBy;
protected Date updatedDt;
protected String updatedBy;

}
public @Data abstract class AbstractModifyWebServReqDTO<D> {

// Attributes
//////////////
protected boolean delete;
protected boolean modify;

}

响应 DTO 的一些示例。

public @Data class ResponseFormat1 extends AbstractEntityWebServResDTO<ResponseFormat1>{

protected String response1Data;

}

这将生成 JSON:

{
"response1Data": "SOME DATA",
"createdDt": "2019-11-02 23:33:23",
"createdBy": "USERID",
"updatedDt": "2019-11-02 23:33:23",
"updatedBy": "USERID"
}

响应 DTO 的另一个示例

public @Data class ResponseFormat2 extends AbstractModifyWebServReqDTO<ResponseFormat2>{

protected String response2Data;

}

这将生成 JSON:

{
"response2Data": "SOME DATA",
"delete": true,
"modify": false
}

如上所示,这些类扩展了与其相关的不同抽象类。但在某些情况下,我需要使用两个抽象类中存在的所有变量。由于我们无法扩展 2 个抽象类,我该如何实现这一点?

我想到的解决方案:

  • 创建一个包含所有变量的抽象类并使用它。但因为我正在使用 FasterXML 将 DTO 转换为 JSON 格式。它将在响应格式中引入所有不需要的变量。
  • 用另一个抽象类扩展抽象。扩展类将生成相同的 JSON 格式,其中包含不需要的变量。
  • 使用变量创建接口(interface) - 但接口(interface)内的变量应该是静态的或最终的。

请帮助强调是否有任何解决方案可以避免在 JSON 中发送不需要的 key ?

最佳答案

使用组合而不是继承

示例:

public class CreateInfo {

protected String updatedDt;
protected String updatedBy;
}



public class UpdateInfo {

protected Date updatedDt;
protected String updatedBy;
}


public class FinalModel {

protected CreateInfo createInfo;
protected UpdateInfo updateInfo;
}

这样你的模型比继承更加灵活,在大多数情况下使用继承并不是一个好的做法。

关于java - 在 Java 类中共享公共(public)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58672910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com