Как создать открытый интерфейс реализации анонимного класса на Kotlin - PullRequest
1 голос
/ 07 ноября 2019

Класс в kotlin является окончательным по умолчанию, который не совместим при использовании аспекта (Spring AOP).

@ Log - мой аспект, записывает забавные параметры.

Этот кодотлично работает

@Log
open class ConfirmCallbackImp : ConfirmCallback {
    override fun confirm(correlationData: CorrelationData?,
                         ack: Boolean,
                         cause: String?) {
    }
}

@Bean
fun setConfirmCallback(): ConfirmCallback {
    return ConfirmCallbackImp()
}

Этот код вызывает исключение

@Bean
fun setConfirmCallback(): ConfirmCallback {
    return object : ConfirmCallback {

        @Log
        override fun confirm(correlationData: CorrelationData?,
                             ack: Boolean,
                             cause: String?) {
        }
    }
}

Исключение: вызвано: java.lang.IllegalArgumentException: Невозможно создать подкласс конечного класса ru. configuration.rbmq.EndpointConfiguration $ setConfirmCallback $ 1

...