使用Spring HATEOAS ControllerLinkBuilder和Kotlin会抛出IllegalArgumentException

时间:2016-03-05 08:24:42

标签: spring kotlin spring-hateoas

我正在使用Kotlin制作一个小型的HATEOAS春季启动应用程序。我想使用ControllerLinkBuilder从处理它们的类中自动创建我的HAL响应链接,如下所示:

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

但这会引发:

java.lang.IllegalArgumentException: Cannot subclass final class UserController

因为Kotlin中的所有类都是默认的最终类。我并不热衷于(并且不想养成习惯)让我所有的课程open只是为了解决这个限制。

我也不想手动建立链接,因为它们可能会发生变化(ControllerLinkBuilder非常便于填充参数等。

目前我在想我必须接受我的控制器类必须打开。还有另一种方法吗?

1 个答案:

答案 0 :(得分:1)

  

我不热衷(并且不想养成习惯)让我的课程全部开放

您只需打开控制器即可。并且它是您正在使用的框架的设计特征,需要子类化。没有办法解决无法继承final类的问题。 JVM正在执行规则。所以你需要打开它们。

还有其他框架不需要子类化来生成类似的功能。