Kotlin – 这是一个聪明的方式来抛出一个类的所有方法NotImplementedError?
我需要实现一个有数百个方法的接口( ResultSet
)。 现在,我将只实现这些方法的一个子集,为其他方法抛出一个NotImplementedError
。
在Java中我发现了两个解决方案:
- 创建一个抽象类
AbstractResultSet
实现ResultSet
,声明所有方法抛出NotImplementedError
。 没有黑客,但有很多样板代码。 - 使用
Proxy.newProxyInstance
在InvocationHandler
一起实现所有方法。 更少的代码,但也不太适合其他编码人员使用。
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。 这是一个加号。