【发布时间】:2019-09-20 18:34:49
【问题描述】:
我在我的项目中使用 Scala 并希望与 Stripe 集成,但它只提供 Java API。例如,要创建会话,我使用:
val params = new util.HashMap[String, AnyRef]
val paymentMethodTypes = new util.ArrayList[String]
paymentMethodTypes.add("card")
params.put("payment_method_types", paymentMethodTypes)
params.put("mode", "setup")
params.put("success_url", "https://test.app/success")
params.put("cancel_url", "https://test.app/cancel")
val session = Session.create(params)
这段代码运行良好,但非常难看并且包含大量样板。我想使用 Scala Map[String, AnyRef] 并按如下方式创建会话:
import scala.collection.JavaConverters._
val params2: Map[String, AnyRef] = Map(
"payment_method_types" -> List("card"),
"mode" -> "setup",
"success_url" -> "https://test.app/success",
"cancel_url" -> "https://test.app/cancel"
)
val session2 = Session.create(mapAsJavaMap[String, AnyRef](params2))
原来mapAsJavaMap 无法转换 Map 中的嵌套对象。有没有办法将任意 Scala Map 与内部的其他 Map 和 List 转换为它们的 Java 等价物?
【问题讨论】:
-
什么版本的scala?你得到什么错误?