Intereting Posts
Библиотека Kotlin 'classes.jar' имеет неподдерживаемый формат. Обновите библиотеку или плагин Котлин и подробный экземпляр массива Regex не соответствует в Kotlin Как конвертировать файл Java в файл Kotlin? Я не могу связаться с членом класса из вложенного класса в Котлин Множественные значения не допускаются для опции плагина. Org.jetbrains.kotlin.android:package Наследование в Котлине Закрыть / Скрыть SoftinputKeyboard в kotlin Вызов конструктора в kotlin с использованием vararg Написание Realm Daos с закрытыми транзакциями Android – как реализовать несколько ViewHolder для макета заголовка другого для макета модели в адаптере Firestore RecyclerView Автоматический приращение документа Firestore из спискаView Ни один из подписчиков RxJava onNext / onError / onComplete не вызывается при цепочке. Наблюдения, созданные из Observable.create () Kotlin: одно свойство с несколькими сеттерами разных типов как разбирать котлинский код?

Использование Spring HATEOAS ControllerLinkBuilder и Kotlin бросает IllegalArgumentException

Я делаю небольшое приложение для загрузки весны HATEOAS с помощью Kotlin. Я хочу использовать ControllerLinkBuilder для автоматического создания ссылок ответа HAL из класса, который имеет к ним отношение, например:

 user.add(linkTo(methodOn(UserController::class.java).findByName(userName)).withSelfRel()) 

но это бросает:

 java.lang.IllegalArgumentException: Cannot subclass final class UserController 

потому что все классы в Котлине по умолчанию окончательны. Я не заинтересован (и не хочу привыкать), open все мои классы, чтобы обойти это ограничение.

Я также не хочу вручную создавать свои ссылки, поскольку они могут меняться (и ControllerLinkBuilder очень удобен для заполнения параметров и т. Д.

В настоящее время я думаю, что мне просто нужно будет признать, что мои классы контроллера должны быть открыты. Есть ли другой способ?

Я не увлекаюсь (и не хочу привыкать), открывая все классы

Вам нужно только открыть свои контроллеры. И это конструктивная особенность используемой структуры, которая требуется для подкласса. Невозможно обойти невозможность подкласса final класса. JVM применяет правило. Поэтому вам нужно сделать их открытыми.

Существуют другие структуры, которые не требуют подклассификации для создания аналогичной функциональности.