I need to implement an interface (ResultSet
) having hundreds of methods.
For now, I'm going to implement only a subset of these methods, throwing a NotImplementedError
for the others.
In Java I found two solutions:
AbstractResultSet
implementing ResultSet
, declaring all methods to throw NotImplementedError
. No hacks, but a lot of boilerplate code.Proxy.newProxyInstance
to implement all methods together in the InvocationHandler
. Less code but also less immediate to use for other coders.Is there a third option in Kotlin?
In my case, I need to implement a a ResultSet
over an IBM dataset (with packed decimals, binary fields, zoned numbers, rows with variable length, etc.) to import it in a SQLServer via SQLServerBulkCopy
. I don't know which ResultSet
methods are called by this class, so, for now, I'm going to implement only the "most used" methods, logging the calls to unimplemented method.
Checkout the standard TODO function which marks a todo and also throws a 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")
Usage:
fun foo() {
TODO("It will be soon")
}
With this way you can also find notImplemented fetures using the IDE "todo" tab. It is a plus.