当条件为真或假时如何在一组枚举中显示不同的文本
How to display different texts in a set of Enums when a condition is true or false
为了验证用户对问题的回答规则,请考虑 Java Spring 引导应用程序中的以下枚举集;只要用户在前端回答问题,就会触发验证。验证通过所有规则(比此处记录的更多):
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";
}
}
我需要在枚举 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),
我需要将这两个验证规则中的逻辑合并为同名,因为我不能在一组枚举中有两个同名的枚举。
我怎样才能做到这一点?
非常感谢任何提示或帮助,谢谢!
在枚举中使用私有构造函数并创建属性,或者您也可以使用函数
enum Rule{
RULE_1(ToggleManager.context);
String text;
String getText(){
// any logic
return text;
}
private Rule(ToggleManager context){
text = context.isOn ? "on" : "off";
}
}
枚举中的所有常量都是对象,例如class你可以使用这些对象做任何事情
访问 属性 Rule.RULE_1.text
试试这个
BERATUNG_KRANKENTAGEGELD_CROSSSELLING(
ToggleContextHolder.getToggleManager().isOn(Toggle.CROSS_SELLING) ?
Constants.HINWEISTEXT_KRANKENTAGEGELD_CROSSSELLING
: Constants.HINWEISTEXT_KRANKENTAGEGELD_CROSSSELLING_MONOLITH,
MessageType.INFO,
(angebot, services) -> angebot.getOrCreateBeratungsfrageByType(BeratungsfrageType.KRANKENTAGEGELD).getAbsicherung()
== BeratungAbsicherung.GEWUENSCHT,
false
)
为了验证用户对问题的回答规则,请考虑 Java Spring 引导应用程序中的以下枚举集;只要用户在前端回答问题,就会触发验证。验证通过所有规则(比此处记录的更多):
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";
}
}
我需要在枚举 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),
我需要将这两个验证规则中的逻辑合并为同名,因为我不能在一组枚举中有两个同名的枚举。
我怎样才能做到这一点? 非常感谢任何提示或帮助,谢谢!
在枚举中使用私有构造函数并创建属性,或者您也可以使用函数
enum Rule{
RULE_1(ToggleManager.context);
String text;
String getText(){
// any logic
return text;
}
private Rule(ToggleManager context){
text = context.isOn ? "on" : "off";
}
}
枚举中的所有常量都是对象,例如class你可以使用这些对象做任何事情
访问 属性 Rule.RULE_1.text
试试这个
BERATUNG_KRANKENTAGEGELD_CROSSSELLING(
ToggleContextHolder.getToggleManager().isOn(Toggle.CROSS_SELLING) ?
Constants.HINWEISTEXT_KRANKENTAGEGELD_CROSSSELLING
: Constants.HINWEISTEXT_KRANKENTAGEGELD_CROSSSELLING_MONOLITH,
MessageType.INFO,
(angebot, services) -> angebot.getOrCreateBeratungsfrageByType(BeratungsfrageType.KRANKENTAGEGELD).getAbsicherung()
== BeratungAbsicherung.GEWUENSCHT,
false
)