Kotlin中的前提条件功能 - 良好实践

时间:2017-07-16 17:14:39

标签: kotlin preconditions

作为一名新手Kotlin程序员,我想知道,是否有一些好的做法甚至是语言结构来声明函数中的前置条件。

在Java中,我一直在使用Guava的Preconditions检查实用程序:

https://github.com/google/guava/wiki/PreconditionsExplained

经过进一步调查后,我遇到了require函数:

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/require.html

这通常用于检查函数的前置条件吗?

3 个答案:

答案 0 :(得分:7)

当然。您可以在Preconditions.kt中找到所有前提条件。除了require功能外,还有requireNotNullcheck& checkNotNull功能。

由于文档在Kotlin中描述得很差,但您可以在jdk中进一步查看Objects#requireNonNull文档。

  

检查指定的对象引用是否为null。此方法主要用于在方法和构造函数中执行参数验证

答案 1 :(得分:2)

答案 2 :(得分:0)

实际上,'require'似乎不会被继承 - 也就是说,如果子类重写了具有'require'语句的函数,则不会强制执行父函数中的'require'。真正的先决条件也适用于重新定义继承函数的情况,因此(IMO)'require'并不真正提供完整的前置条件检查功能。

(我说“看起来”是因为,作为kotlin的新手,我通过使用继承的简单实验学到了这一点 - 而且我可能错了 - 例如,编译器中存在导致错误行为的错误,或者我在编译/设置方面做错了。但我不认为这种可能性是可能的。)