Kotlin: ¿Es aquí una forma inteligente de lanzar NotImplementedError para todos los methods de una class?

Necesito implementar una interfaz ( ResultSet ) que tenga cientos de methods. Por ahora, voy a implementar solo un subset de estos methods, lanzando un NotImplementedError para los demás.

En Java encontré dos soluciones:

  1. Cree una class abstracta AbstractResultSet implementando ResultSet , declarando todos los methods para lanzar NotImplementedError . No hacks, pero sí muchos códigos repetitivos.
  2. Use Proxy.newProxyInstance para implementar todos los methods juntos en InvocationHandler . Menos código pero también less inmediato para otros codificadores.

¿Hay una tercera opción en Kotlin?

En mi caso, necesito implementar un ResultSet sobre un set de datos de IBM (con decimales empaquetados, campos binarys, numbers zonificados, filas con longitud variable, etc.) para importarlo en un SQLServer a través de SQLServerBulkCopy . No sé qué methods de ResultSet son llamados por esta class, así que, por ahora, voy a implementar solo los methods "más usados", registrando las llamadas al método no implementado.

Puede MyResultSet una interfaz MyResultSet que henetworkinga de ResultSet e implementar todos los methods para lanzar NotImplementedError. Es como su primera solución en Java, pero ahora es una interfaz, no una class, y le da más flexibilidad. Espero ayuda.

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

Verifique la function TODO estándar que marca un todo y también arroja un 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") 

Uso:

 fun foo() { TODO("It will be soon") } 

De esta forma también puedes encontrar fetiches no utilizados usando la pestaña IDE "todo". Es una ventaja.