2016-03-05 4 views
1

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

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

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

java.lang.IllegalArgumentException: Cannot subclass final class UserController 

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

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

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

ответ

0

Я не сильно (и не хотят, чтобы войти в привычку), что делает все мои занятия открытые

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

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

+0

Просто из curiositiy: Какие другие рамки обеспечивают аналогичную функциональность? – thg