kotlin有一个require函数,可以这样使用(从参考文档中复制):
fun getIndices(count: Int): List<Int> {
require(count >= 0) { "Count must be non-negative, was $count" }
// ...
return List(count) { it + 1 }
}
// getIndices(-1) // will fail with IllegalArgumentException
println(getIndices(3)) // [1, 2, 3]
如果值为false,则函数本质上抛出illegalargumentexception。显然,这可以很容易地用java实现——但我想知道,jdk或apache库(或任何其他普遍存在的库)中是否已经有了提供这种功能的功能?
5条答案
按热度按时间brc7rcf01#
vjhs03f72#
有一种方法
requireNonNull()
在java.util.Objects
获取一个对象引用并检查它是否存在null
.看看这里的javadoc!
但很明显,这不如kotlin版本灵活…
qf9go6mv3#
你可以用
assert
等价于kotlin的函数require
方法。用Assert编程
jdk默认情况下禁用Assert操作。如果要启用Assert操作,则必须使用如下vm选项定义已启用的包或类位置
-ea:com.example.demo...
启用和禁用Assert我更喜欢Spring框架
org.springframework.util.Assert
类,因为有很多方法用于验证参数。更简单的方法:
懒惰的方式(为了更好的性能和像kotlin一样的流)
require
功能):springAssert语句
对于单元测试,可以使用junit(
org.junit.Assert
)或者木星(org.junit.jupiter.api.Assertions
)Assert函数。gc0ot86w4#
也一样。您可以决定在运行时是否启用Assert。要运行这个你需要通过
-ea
作为java命令行选项。请注意,例外情况也有点不同:
bnlyeluc5#
由于java1.4,jdk中有assert关键字,可以用来做类似的事情。在这种情况下,会抛出asserrionerror。