将 java.lang.Boolean 转换为 Scala Boolean

我目前正在开发一个 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 方法可以做到这一点?


牛魔王的故事
浏览 233回答 3
3回答

当年话下

我使用了 scala.Boolean box和unbox方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java