【发布时间】:2018-04-06 21:07:27
【问题描述】:
我正在 Kotlin 中构建一个验证库。基类是abstract,实现了适用于所有类型的方法; isNotNull 例如:
abstract class Validator<V>(protected val value: V?) {
fun isNotNull(): Validator<V> {
if(value == null) {
// ... some validation handling here ...
}
return this
}
}
然后我对特定类型的验证器进行子分类:
class IntValidator(value: Int?) : Validator<Int>(value) {
fun isNotZero(): IntValidator {
if(value == 0) {
// ... some validation handling here ...
}
return this
}
}
现在说我想验证一个 Int?不为空也不为零
val validator = IntValidator(myNullableInteger)
validator
.isNotNull()
.isNotZero()
上面的代码不起作用,因为.isNotNull()返回Validator<V>,而不是IntValidator,所以.isNotZero()不再在范围内。
方法有没有办法返回实例化它们的类型(在我的例子中,我希望它返回IntValidator,而不是Validator<T>)?
【问题讨论】:
标签: kotlin