我需要实现一个具有数百种方法的接口(interface)(ResultSet
)。
现在,我将只实现这些方法的一个子集,抛出 NotImplementedError
为其他人。
在 Java 中,我找到了两个解决方案:
AbstractResultSet
实现ResultSet
, 声明所有方法抛出 NotImplementedError
.没有黑客,但有很多样板代码。 Proxy.newProxyInstance
在 InvocationHandler
中一起实现所有方法.更少的代码,但也不太直接用于其他编码器。 Kotlin 有第三种选择吗?
就我而言,我需要实现一个
ResultSet
通过 IBM 数据集(包含压缩小数、二进制字段、分区数字、可变长度行等)通过 SQLServerBulkCopy
将其导入 SQLServer .不知道是哪个ResultSet
方法被这个类调用,所以,现在,我将只实现“最常用”的方法,记录对未实现方法的调用。
最佳答案
checkout 标准的 TODO 函数,它标记了一个 todo 并抛出了一个 NotImplementedError
/**
* Always throws [NotImplementedError] stating that operation is not implemented.
*
* @param reason a string explaining why the implementation is missing.
*/
@kotlin.internal.InlineOnly
public inline fun TODO(reason: String): Nothing = throw NotImplementedError("An operation is not implemented: $reason")
用法:
fun foo() {
TODO("It will be soon")
}
通过这种方式,您还可以使用 IDE 的“todo”选项卡找到未实现的功能。这是一个加号。
关于reflection - Kotlin - 是否有一种聪明的方法可以为类的所有方法抛出 NotImplementedError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47000818/