为了账号安全,请及时绑定邮箱和手机立即绑定

将 java.lang.Boolean 转换为 Scala Boolean

将 java.lang.Boolean 转换为 Scala Boolean

牛魔王的故事 2021-10-20 14:48:31
我目前正在开发一个 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 方法可以做到这一点?
查看完整描述

3 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

我使用了 scala.Boolean boxunbox方法。


查看完整回答
反对 回复 2021-10-20
  • 3 回答
  • 0 关注
  • 232 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信