当尝试调用接受以下类型的java方法(在本例中为构造函数(时:java.lang.Double?
示例(AuthRequestModel 是一个 Java 模态(:
AuthRequestModel(amount = 10.toDouble())
解决错误:
类型不匹配。必需:Java.lang.Double?找到: Kotlin.Double
从 Kotlin Double(或任何其他原语(转换为 Java 的正确方法是什么?
现在,我添加了一种转换方法,如下所示:
小鬼:
fun Double.asJava(): java.lang.Double = this as java.lang.Double
用法:
AuthRequestModel(amount = 10.toDouble().asJava())
但这是强制铸造,我认为有一种原生方法可以实现相同的结果......
根据 kotlinlang.org
Java 的盒装基元类型映射到可为空的 Kotlin 类型:
Java type Kotlin type
java.lang.Byte kotlin.Byte?
java.lang.Short kotlin.Short?
java.lang.Integer kotlin.Int?
java.lang.Long kotlin.Long?
java.lang.Character kotlin.Char?
java.lang.Float kotlin.Float?
java.lang.Double kotlin.Double?
java.lang.Boolean kotlin.Boolean?
这意味着你可以投射到可空的 kotlin。双?并在本地使用您的 Java 目标。
如果AuthRequestModel
是一个 Java 类,您将无法使用命名参数来调用其构造函数。我的猜测是,AuthRequestModel
是一个 Kotlin 类,但翻译成 Kotlin 的效果很差。修复翻译,使其使用普通Double
或Double?
。