我目前正在开发一个 Scala 应用程序,它利用 Spring-Boot 和 Swagger 来发送和接收 REST 调用。
Swagger 和 Spring-Boot 是纯 Java 项目,与 Scala 的兼容性有限,但我似乎找到了解决该问题的方法。
由于 Spring-Boot 和 Swagger 将请求作为 Java 对象处理(需要 setter 和 getter 才能工作),因此我必须将请求视为 Java 对象并将请求转换为稍后的请求。这是我所做的非常简化的版本:
case class ParamsAsJava(includeMovies: java.lang.Boolean = java.lang.Boolean.FALSE, includeTvShows: java.lang.Boolean = java.lang.Boolean.FALSE) {
def toScala(): Params = {
Params(
includeMovies = convertToScala(includeMovies),
includeTvShows = convertToScala(includeTvShows)
)
}
private def convertToScala(test: java.lang.Boolean): Boolean
= if (test == null) false else test.booleanValue
}
case class Params(includeMovies: Boolean = false, includeTvShows: Boolean = false)
object Application extends App {
val test1 = ParamsAsJava(java.lang.Boolean.FALSE, java.lang.Boolean.TRUE).toScala
val test2 = ParamsAsJava(java.lang.Boolean.TRUE, java.lang.Boolean.TRUE).toScala
val test3 = ParamsAsJava().toScala
val test4 = ParamsAsJava(null, null).toScala
val test5 = ParamsAsJava(null, java.lang.Boolean.TRUE).toScala
println(s"Test 1 = $test1")
println(s"Test 2 = $test2")
println(s"Test 3 = $test3")
println(s"Test 4 = $test4")
println(s"Test 5 = $test5")
}
输出
测试 1 = 参数(假,真)
测试 2 = 参数(真,真)
测试 3 = 参数(假,假)
测试 4 = 参数(假,假)
测试 5 = 参数(假,真)
好的...我的问题是:
有没有更简单易读的方法来实现这一目标?我每次都必须调用 ParamsAsJava.toScala 还是有一些很棒的 Scala 方法可以做到这一点?
当年话下
相关分类