java - Java 中是否有一个功能可以确保该方法被调用

标签 java builder

我使用类似于 builder/fluid API 的模式来配置一些计时服务。我知道它不是一个典型的构建器,但它看起来非常好,我想保持这种风格。

看起来像:

Action someAction = getAction();
someAction.shouldRunEvery(5).seconds();

最后一个动词可以是秒()、分钟()、毫秒()等。 链中最后一个方法中的代码实际上将更改写入存储库。 典型的错误(尽管我知道内部原理,但我已经犯了不止一次)是使用这样的方法:

someAction.shouldRunEvery(10);

有没有办法确保在对象上调用接口(interface)的函数? 我可以使用 java 8/9 和/或其他库的任何功能。

补充1: 流体 API 是如何生产的:

interface Action{ ActionUnit shouldRunEvery (int time);}
interface ActionUnit { void seconds(); void minutes(); ... etc.}

补充2: 我试图研究异常(exception)情况,但不知道如何将它们缝合并保持整洁。

补充3: 可能最好的答案是将 API 更改为如下所示:

someAction.shouldRunEvery(seconds(5));

但在这种情况下我失去了流动性。

最佳答案

Java 中没有好的方法,但仍然是可能的。您可以在这里找到“安全生成器”示例 Generator of Turing Machines that run on Java generic types 。 该示例利用了 Java 泛型是图灵完备这一事实。您可以阅读原文(仅限俄语Тьюринг-полнота Generic типов Java)

但恐怕这对于现实生活来说太糟糕了。

关于java - Java 中是否有一个功能可以确保该方法被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45977001/

相关文章:

java - 这是对 MySQL 使用 MAX 函数的正确方法吗?

java - 当方法中的某些线程完成时如何返回方法?

dsl - 在 Kotlin 中,如何将扩展方法添加到另一个类,但仅在特定上下文中可见?

javascript - 在 flex/flash builder 4.6 多平台移动应用程序中流式传输广播电台音频

java - java中的字符转换

java - 使用 Java Soap 客户端进行抢先授权

java - 无法在 sphinx4 中加载 en-us-semi 模型

具有继承性的 C++ 构建器模式

python - 你可以使用字符串来实例化一个类吗?

iphone - 如何在 iOS Interface Builder 中使用子文件夹中的图像