Kotlin - Is there a smart way to throw NotImplementedError for all the methods of a class?

kotlin packed-decimal reflection resultset sqlbulkcopy

Question

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:

  1. Create an abstract class AbstractResultSet implementing ResultSet, declaring all methods to throw NotImplementedError. No hacks, but a lot of boilerplate code.
  2. Use 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.

1
2
1/18/2018 10:32:51 PM

Popular Answer

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.

1
10/30/2017 8:54:34 PM


Related Questions





Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow