Kotlin – 这是一个聪明的方式来抛出一个类的所有方法NotImplementedError?

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

在Java中我发现了两个解决方案:

  1. 创建一个抽象类AbstractResultSet实现ResultSet ,声明所有方法抛出NotImplementedError 。 没有黑客,但有很多样板代码。
  2. 使用Proxy.newProxyInstanceInvocationHandler一起实现所有方法。 更少的代码,但也不太适合其他编码人员使用。

Kotlin有第三种选择吗?

在我的情况下,我需要通过IBM数据集(打包十进制,二进制字段,分区号,可变长度的行等)实现一个ResultSet通过SQLServerBulkCopy在SQLServer中导入它。 我不知道哪个ResultSet方法是由这个类调用的,所以现在我只实现“最常用的”方法,将调用记录到未实现的方法中。

您可以创建从ResultSet继承的Interface MyResultSet ,并实现所有方法来引发NotImplementedError。 这就像你在Java中的第一个解决方案,但它现在是一个接口,而不是一个类,给你更多的灵活性。 希望帮助。

 interface MyResultSet : ResultSet { fun bar() ... fun foo() { throw NotImplementedError() } } 

检出标记待办事项的标准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”选项卡找到未实现的fetures。 这是一个加号。