![]() |
1
5
如果您正在寻找一个完全成熟的契约式设计机制,我将查看 Wikipedia page for DBC . 如果你想找更简单的东西,你可以看看 Preconditions 来自Google集合的类,该集合提供了checkNotNull()方法。因此,您可以重写发布到的代码:
|
![]() |
2
2
我见过一种技术 Eric Burke 大致如下。它是静态导入的优雅用法。代码读起来很好。
为了得到这个想法,这里是
下面是一个示例用法。这个
注意:实验时,注意 there may be a bug 在默认包中执行此操作。我当然已经失去了尝试它的脑细胞。 |
![]() |
3
1
有一个小的 Java Argument Validation 包,实现为纯Java。它附带了几个标准检查/验证。对于那些需要自己更具体验证的情况,它附带了一些辅助方法。对于多次发生的验证,只需使用您自己的扩展接口argumentvalidation,并创建从类argumentvalidationimpl扩展的实现类。 |
![]() |
4
0
这并不能直接回答你的问题,但我认为你的部分问题是你做了太多的验证。例如,您可以将第一个测试替换为:
并依靠Java来抛出一个
|
![]() |
5
0
贾里德指出了各种将DBC支持到Java的框架。
|
![]() |
6
0
我将使用参数注释、反射和通用验证器类来创建一个应用程序范围的工具。例如,可以对类方法进行如下编码: …mymethod(@notnull string x,@notnullor zero string y){
} 类方法被“标记”以注释其合同要求。使用反射自动发现参数、参数值和注释。全部发送到一个静态类来验证并让您知道结果。 |
![]() |
7
0
不是一个完全有效的解决方案,但是JSR-303有一个关于 method-level validation extension .因为它只是一个扩展建议,所以JSR-303的实现可以忽略它。找到一个实现有点复杂。我认为Hibernate验证器还不支持它,但我相信 agimatec-validation 有实验支持。我也没有用过,所以我不知道它们有多好用。不过,如果有人试一试的话,我会很感兴趣的。 |
![]() |
8
0
如果使用Java 8,LAMBDAS可以用来创建一个非常优雅和可读的验证方案:
你使用它就像:
例外情况如下:
第一件好事情是上面的断言类是真正需要的:
当然
但是,不需要实现它来执行不同的测试。 如果你想:
我不知道这是否对表现不利,或者出于其他原因不是一个好主意。(刚开始自己研究lambda,但代码似乎按它应该的方式运行…)但我喜欢这样。
下面是一个获得更好错误消息的方法:
你称之为:
出来的是:
更新:
如果你想使用
|
![]() |
George Alexander · 类似电报的用户名的Regex 1 年前 |
![]() |
Aliaksei · 保存前进行WebFlux检查 3 年前 |
![]() |
Nimet · 如何在regex密码模式中转义* 3 年前 |
![]() |
Jee · PowerShell输入验证-输入不应为所有数字 7 年前 |
![]() |
James · Django使用RangeWidget验证表单 7 年前 |