Мне нужно реализовать интерфейс ( ResultSet
), содержащий сотни методов. Пока, я собираюсь реализовать только подмножество этих методов, бросая NotImplementedError
для других.
В Java я нашел два решения:
AbstractResultSet
реализующий ResultSet
, объявляя все методы, чтобы бросать NotImplementedError
. Никаких хаков, но много шаблонов. Proxy.newProxyInstance
для реализации всех методов вместе с InvocationHandler
. Меньше кода, но и менее непосредственный для использования для других кодеров. Есть ли третий вариант в Котлине?
В моем случае мне нужно реализовать aa ResultSet
по набору данных IBM (с упакованными десятичными знаками, двоичными полями, зонированными номерами, строками с переменной длиной и т. Д.), Чтобы импортировать его в SQLServer через SQLServerBulkCopy
. Я не знаю, какие методы ResultSet
вызываются этим классом, поэтому на данный момент я собираюсь реализовать только «наиболее используемые» методы, записывая вызовы на нереализованный метод.
Оформить стандартную функцию TODO, которая знаменует 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")
}
Таким образом, вы также можете найти notImplemented fetures, используя вкладку «todo» IDE. Это плюс.