為了驗證用戶對問題的回答的規則,請考慮 Java Spring Boot 應用程式中的以下一組列舉;每當用戶在前端回答問題時都會觸發驗證。驗證通過所有規則(比此處記錄的要多得多):
public enum AngebotValidationRule implements ValidationRule<Angebot> {
BERATUNG_KRANKENTAGEGELD_PFLICHTFELD(
FEHLERTEXT_BERATUNGSFRAGE_PFLICHTFELD,
MessageType.ERROR,
((angebot, services) ->
ToggleContextHolder.getToggleManager().isOn(Toggle.CROSS_SELLING)
&& angebot
.getOrCreateBeratungsfrageByType(BeratungsfrageType.KRANKENTAGEGELD)
.getAbsicherung()
== null),
false),
BERATUNG_KRANKENTAGEGELD_CROSSSELLING(
Constants.HINWEISTEXT_KRANKENTAGEGELD_CROSSSELLING,
MessageType.INFO,
((angebot, services) ->
(ToggleContextHolder.getToggleManager().isOn(Toggle.CROSS_SELLING)
&& angebot
.getOrCreateBeratungsfrageByType(BeratungsfrageType.KRANKENTAGEGELD)
.getAbsicherung()
== BeratungAbsicherung.GEWUENSCHT),
false),
BERATUNG_KRANKENTAGEGELD_CROSSSELLING_MONOLITH(
Constants.HINWEISTEXT_KRANKENTAGEGELD_CROSSSELLING_MONOLITH,
MessageType.INFO,
((angebot, services) ->
(ToggleContextHolder.getToggleManager().isOff(Toggle.CROSS_SELLING))
&& angebot
.getOrCreateBeratungsfrageByType(BeratungsfrageType.KRANKENTAGEGELD)
.getAbsicherung()
== BeratungAbsicherung.GEWUENSCHT),
false),
static class Constants {
public static final String FEHLERTEXT_BERATUNGSFRAGE_PFLICHTFELD =
"Some terrific text here!";
public static final String HINWEISTEXT_KRANKENTAGEGELD_CROSSSELLING =
"Some other terrific text here!";
public static final String HINWEISTEXT_KRANKENTAGEGELD_CROSSSELLING_MONOLITH =
"Another terrific text here";
}
}
我需要在 Enum BERATUNG_KRANKENTAGEGELD_CROSSSELLING 中實作 if-else 或 switch-condition,這樣 - 每當 ToggleManager 打開或關閉時 - 都會顯示不同的文本:
BERATUNG_KRANKENTAGEGELD_CROSSSELLING(
Constants.HINWEISTEXT_KRANKENTAGEGELD_CROSSSELLING,
MessageType.INFO,
((angebot, services) ->
(ToggleContextHolder.getToggleManager().isOn(Toggle.CROSS_SELLING)
&& angebot
.getOrCreateBeratungsfrageByType(BeratungsfrageType.KRANKENTAGEGELD)
.getAbsicherung()
== BeratungAbsicherung.GEWUENSCHT),
false),
BERATUNG_KRANKENTAGEGELD_CROSSSELLING(
Constants.HINWEISTEXT_KRANKENTAGEGELD_CROSSSELLING_MONOLITH,
MessageType.INFO,
((angebot, services) ->
(ToggleContextHolder.getToggleManager().isOff(Toggle.CROSS_SELLING))
&& angebot
.getOrCreateBeratungsfrageByType(BeratungsfrageType.KRANKENTAGEGELD)
.getAbsicherung()
== BeratungAbsicherung.GEWUENSCHT),
false),
我需要將這兩個具有相同名稱的驗證規則中的邏輯組合在一起,因為我不能在一組列舉中擁有兩個具有相同名稱的列舉。
我怎樣才能做到這一點?任何提示或幫助將不勝感激,謝謝!
uj5u.com熱心網友回復:
在列舉中使用私有建構式并創建屬性,或者您也可以使用函式
enum Rule{
RULE_1(ToggleManager.context);
String text;
String getText(){
// any logic
return text;
}
private Rule(ToggleManager context){
text = context.isOn ? "on" : "off";
}
}
列舉中的所有常量都是物件,就像類一樣,您可以使用這些物件來訪問屬性做任何事情Rule.RULE_1.text
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/454871.html
上一篇:If/Else陳述句失敗
下一篇:替代ifelsepython