![](/img/trans.png)
[英]How to mention Boolean value in 'Examples' in feature file of cucumber and make sure it creates a method in java?
[英]Is there a feature in Java to make sure that method is called
我正在使用类似于builder / fluid API的模式来配置一些计时服务。 我知道它不是典型的构建器,但看起来非常不错,我想保留这种样式。
看起来像:
Action someAction = getAction();
someAction.shouldRunEvery(5).seconds();
最后一个动词可以是seconds(),minutes(),milliseconds()等。chain中last方法中的代码实际上将更改写入存储库。 典型的错误(尽管知道内部原理,但我已经多次这样做)使用的是这样的方法:
someAction.shouldRunEvery(10);
有没有办法确保在对象上调用接口的功能? 我可以使用Java 8/9和/或其他库的任何功能。
附加1:如何生成流体API:
interface Action{ ActionUnit shouldRunEvery (int time);}
interface ActionUnit { void seconds(); void minutes(); ... etc.}
补充2:我尝试研究异常,但是无法弄清楚如何在其上进行缝合并使事情保持整洁。
添加3:最好的答案可能是将API更改为以下形式:
someAction.shouldRunEvery(seconds(5));
但在这种情况下,我失去了流动性。
用Java没有很好的方法,但是仍然可以。 您可以在此处找到“安全构建器”样本,该样本在Java泛型类型上运行的Turing Machines生成器 。 该示例使用Java泛型已完成的事实。 您可以阅读原始文章(仅限俄语Тьюринг-полнота通用типовJava )
但是,恐怕对于现实生活来说,语法太糟糕了。
您可以通过使时间单位方法返回一个Action并让getAction()
返回一个Action(而非新生对象)(例如,一个“ PreAction”)来强制调用其中一个时间单位方法:
PreAction someAction = getPreAction();
因此,接口如下所示:
interface PreAction{ ActionUnit shouldRunEvery (int time);}
interface ActionUnit { Action seconds(); Action minutes(); ... etc.}
现在,当您忘记时间单位时,您将得到一个不能用作操作的PreAction对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.