我不是在問“如何驗證列舉”。
假設我有這樣的請求體:
public class VerifyAccountRequest {
@Email(message = "2")
private String email;
}
我想要做什么,而不是硬編碼的方式,我只想從列舉類回傳訊息的值。但 IDEA 說“屬性值必須是常量”
public enum MyEnum {
EMAIL("2", "info"),
public String messageCode;
public String info;
}
public class VerifyAccountRequest {
@Email(message = MyEnum.Email.code) // NOT_WORKING
private String email;
}
我也可以在界面中定義“2”,但我不想這樣做:
public interface MyConstant {
String EMAIL = "2";
}
public class VerifyAccountRequest {
@Email(message = MyConstant.EMAIL) // WORKS, BUT I HAVE TO USE ENUM !!!
private String email;
}
是否可以使用列舉類回傳訊息值?
uj5u.com熱心網友回復:
Java 規則規定,當您有一個注解,并且它有一個需要原始型別(例如 int)或 String 的引數時,該值必須是一個常量運算式。您正在嘗試在運行時設定一個值。但是,在 JVM 加載類之前,注釋屬性必須有一個確切的值,否則會顯示錯誤。
結構 element_value 可以存盤四種不同型別的值:
- 來自常量池的常量
- 類文字
- 嵌套注釋
- 一組值
因此,注釋屬性中的常量是編譯時常量。否則,編譯器將不知道應該將什么值放入常量池并將其用作注釋屬性。欲了解更多資訊,請閱讀此內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/344088.html
