共享类Java中的公共变量

问题描述 投票:0回答:1

以下问题可能太幼稚,但是请帮助我找到解决方案。

我正在使用Java RESTful API,在这里我以JSON格式发送响应格式。由于要设计多个API,因此我想到了将一些公共变量保留在Abstract类中,并尽可能重用。下面是我设计的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
}

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

我想到的解决方案:

  • 创建具有所有变量的单个抽象类并使用它。但是当我使用FasterXML将DTO转换为JSON格式时。它将以响应格式带来所有不需要的变量。]​​>
  • 用另一个Abstract类扩展Abstract。扩展类将产生相同的JSON格式,其中包含不需要的变量。
  • 使用变量创建接口-但是接口内的变量应该是静态的或最终的。
  • [请帮助突出显示是否有可用的解决方案来避免在JSON中发送不需要的密钥?

以下问题可能太幼稚,但是请帮助我找到解决方案。我正在使用Java RESTful API,以JSON格式发送响应格式。由于存在多个...

java json rest jackson fasterxml
1个回答
0
投票

使用合成代替继承

© www.soinside.com 2019 - 2024. All rights reserved.