我正在使用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
非常便于填充参数等。
目前我在想我必须接受我的控制器类必须打开。还有另一种方法吗?
答案 0 :(得分:1)
我不热衷(并且不想养成习惯)让我的课程全部开放
您只需打开控制器即可。并且它是您正在使用的框架的设计特征,需要子类化。没有办法解决无法继承final
类的问题。 JVM正在执行规则。所以你需要打开它们。
还有其他框架不需要子类化来生成类似的功能。