Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation Kotlin:在接口中指定输入约束_Validation_Kotlin_Exception_Interface_Defensive Programming - Fatal编程技术网

Validation Kotlin:在接口中指定输入约束

Validation Kotlin:在接口中指定输入约束,validation,kotlin,exception,interface,defensive-programming,Validation,Kotlin,Exception,Interface,Defensive Programming,假设我有以下界面: interface MathThing { fun mathFunction(x : Int) } 假设我想对这个函数施加的约束是x不能为负 如何确保每次在MathThing类型的对象上不满足此(或任何其他任意)条件时,都会引发(自定义)异常?一种方法是对函数参数使用包装类。您可以创建一个扩展函数,以便更容易地将值传递给函数 data class NonNegative(val value: Int) { init{ if (value < 0) t

假设我有以下界面:

interface MathThing {

    fun mathFunction(x : Int)
}
假设我想对这个函数施加的约束是x不能为负


如何确保每次在MathThing类型的对象上不满足此(或任何其他任意)条件时,都会引发(自定义)异常?

一种方法是对函数参数使用包装类。您可以创建一个扩展函数,以便更容易地将值传递给函数

data class NonNegative(val value: Int) {
    init{ if (value < 0) throw IllegalArgumentException("Input must not be negative.") }
}

fun Int.nonNegative() = NonNegative(this)

interface MathThing {
    fun mathFunction(x : NonNegative)
}
数据类非负(val值:Int){
init{if(值<0)抛出IllegalArgumentException(“输入不能为负。”)}
}
fun Int.nonNegative()=非负(此)
接口数学{
函数(x:非负)
}

可以使用无符号整数。这只是一个简单的例子,我实际上并不需要。我想知道如何实施任何约束。但不管怎样,我都会查找这个类。一般来说,接口不能在其实现中强制执行任何内容。您添加了一条注释,说明实现应该检查某些内容是否正确。