reflection - Kotlin - 是否有一种聪明的方法可以为类的所有方法抛出 NotImplementedError?

标签 reflection kotlin resultset sqlbulkcopy packed-decimal

我需要实现一个具有数百种方法的接口(interface)(ResultSet)。
现在,我将只实现这些方法的一个子集,抛出 NotImplementedError为其他人。

在 Java 中,我找到了两个解决方案:

  • 创建一个抽象类AbstractResultSet实现ResultSet , 声明所有方法抛出 NotImplementedError .没有黑客,但有很多样板代码。
  • 使用Proxy.newProxyInstanceInvocationHandler 中一起实现所有方法.更少的代码,但也不太直接用于其他编码器。

  • 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/

    相关文章:

    c# - 解析 C# 代码(作为字符串)并插入其他方法

    java - 同步属性 getter / setter

    java - getColumnLabel 与 getColumnName

    java - 为什么 rs.next() 不转到另一条记录

    java - 遍历 ResultSet 并将其值添加到 ArrayList

    c# - 通过对同一程序集的反射生成代码

    java - 如何基于某个类实例化具体的实现?

    java - 如何用 guice 替换反射?

    android - Kotlin 中的 EvictingQueue

    android - 我可以在 @Composable 之外使用 Jetpack 撰写图标吗?