这两个构造函数上的错误最终的空白字段errorCodes可能尚未初始化

时间:2019-01-10 04:59:44

标签: java

public enum DataMatchErrorCodes {

  PAYLOAD_IS_EMPTY(100, "payload is empty or invalid payer"),
  MULTIPLE_PROVIDERFOUND("zz", "Multiple Provider Found"),
  PROVIDER_NOTFOUND(43, "provider not found"),
  PROCESS_MSG_ERROR(53, "unable to process msg");


    private final int errorCode;
    private final String errorMessage;
    private final String errorCodes;



    DataMatchErrorCodes(int errorCode, String errorMessage) {
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;
      }
    DataMatchErrorCodes( String errorCodes, String errorMessage) {
        this.errorCodes = errorCodes;
        this.errorMessage = errorMessage;
      }

1 个答案:

答案 0 :(得分:0)

您必须在声明它们时为类级别的最终变量提供值,或者在构造函数中提供值。

如果使用第一个构造函数,则最终变量errorCodes将保持未初始化状态,这是编译器错误。

类似地,如果您使用第二个构造函数,则最终变量errorCode将保持未初始化状态。

您需要为所有三个变量提供值,或者将errorCodeserrorCode设为非最终值。


更新

而不是同时做这两个事情:-

private final int errorCode;
private final String errorCodes;

您可以拥有:-

private final Object errorCode;

Object类型将能够存储IntegerString。然后,您只需要1个构造函数:-

DataMatchErrorCodes(Object errorCode, String errorMessage)