Interface DeclaredCodeEnum


public interface DeclaredCodeEnum

自帶對外代碼的列舉。

多數列舉的 wire 值可由常數名導出(見 LowercaseEnumJsonMapperCustomizer)。但當該概念 已有既存的對外代碼形式——政府代碼表、既有系統、已上線契約——代碼先於本系統存在, 導不出來也不該導:把院別代碼 A 導成 medical_institution 只會多一層對不上的翻譯。

實作本介面即宣告「這個列舉的 wire 值是 getCode(),不是常數名的導出值」。 兩個效果:

  • EnumWireValues.of(Enum) 對它回 getCode(),出站手工序列化因此自動正確。
  • 應用的架構閘門可據此分辨「宣告式代碼」與「純列舉」——前者用 @JsonValue getCode() 讓 Jackson 送出代碼是正當機制,後者標 @JsonValue 才是脫隊。

顯示文字不屬本介面的職責(那是 getLabel() 一類的另一個表述);需要時由實作自行擴充。

public enum InstitutionType implements DeclaredCodeEnum {
    MEDICAL_INSTITUTION("A"),   // 院別代碼 ACC,見需求規格書
    PUBLIC_HEALTH_CENTER("B");

    private final String code;
    InstitutionType(String code) { this.code = code; }

    @Override public String getCode() { return code; }
}
  • Method Summary

    Modifier and Type
    Method
    Description
    該常數的對外代碼——即它的 wire 值。
  • Method Details

    • getCode

      String getCode()
      該常數的對外代碼——即它的 wire 值。