为了验证用户对问题的回答的规则,请考虑JavaSpring 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_交叉销售中实现一个if-else或switch条件,以便无论何时打开或关闭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),
我需要将这两个验证规则中的逻辑与相同的名称相结合,因为我不能在一组ENums中拥有两个具有相同名称的ENums。
我如何才能做到这一点?任何提示或帮助将不胜感激,谢谢!
在枚举中使用私有构造函数并创建属性,也可以使用函数
enum Rule{
RULE_1(ToggleManager.context);
String text;
String getText(){
// any logic
return text;
}
private Rule(ToggleManager context){
text = context.isOn ? "on" : "off";
}
}
枚举中的所有常量都是对象,就像类一样,您可以使用这些对象来访问属性规则。RULE_1.text
问题内容: 如果我在if块内创建变量,则以后将无法使用它。如果我在if块之前创建一个变量,而if块的计算结果为false,则会出现“变量已创建且未使用”的错误。 我敢肯定,这是设计使然,我正在尝试做我不应该做的事情,但是我想做的事情背后的逻辑对我来说很有意义。如果url中有页面信息,我以后想在sql语句中使用它,但是如果url中没有页面信息,则不需要这些变量。 http://pastebin.co
我正在使用swagger-codemen-maven-plugin(2.2.1)从YML配置生成java和打字代码类文件。我有两个问题。 如何在YML中定义枚举属性数组? 如何在YML中定义map属性枚举为key,布尔值为value? 让我知道这是可能的还是有任何解决办法?目前,我在java和typescrtipt中定义了enum类,并将其作为字符串传递。谢谢 招摇过市枚举文件 地图物业 更新:
问题内容: 我主要是C#开发人员,但目前正在使用Python开发项目。 如何用Python表示等效的枚举? 问题答案: 如PEP 435中所述,将枚举添加到Python 3.4中。它也已在pypi上反向移植到3.3、3.2、3.1、2.7、2.6、2.5和2.4。 对于更高级的Enum技术,请尝试aenum库(2.7、3.3+,与作者相同。py2和py3之间的代码并不完全兼容,例如,您需要__or
问题内容: 编辑 感谢您的及时答复。请查看真正的问题是什么。这次我已经大胆了。 我确实了解==和.equals之间的区别。所以,这不是我的问题(我实际上为此添加了一些上下文) 我正在执行以下针对空字符串的验证: 在 过去的 从数据库中获取的值或者从另一个节点反序列化对象时,本次测试 失败 ,因为这两个字符串实例确实不同对象的引用,尽管它们含有相同的数据。 因此,解决这些情况的方法是 我很好。这是很
我在枚举中有6个值,使用6 if else是一种很糟糕的做法。我们能以更好的方式实现这一点吗?下面是我的场景: 我在考虑switch,但并没有太大的区别,我还需要根据某些参数在doA()内返回一个布尔值。 提前谢谢。
下面是网页的HTML代码。 而且 我正在执行一个基于这样一个条件的程序:如果某个文本被显示,那么我必须点击动态按钮。如果下列条件为真 driver.findElements(by.xpath(“//div[starts-with(@id,'qwer')]//a[contains(text(),'holiday')]”); 然后我会点击页面上的所有按钮 下面是这方面的程序。运行此程序后,它将执行el