如何在Java中创建Kotlin UInt类型并实例化MyUIntValue?
问题解决:Java中创建Kotlin UInt类型类的实例
原因说明
Kotlin的UInt是无符号整数类型,在JVM平台上并没有对应原生的无符号整数类型,而是被编译为一个带有私有构造方法的包装类。因此Java代码无法直接通过传入int值来创建接受UInt参数的Kotlin类实例——编译器尝试自动转换时会触发私有构造方法的访问限制,导致报错。
解决方案
方案1:修改Kotlin类,添加Java兼容构造方法
在Kotlin类中新增一个接受Int参数的构造方法,内部自动转为UInt,这样Java可以直接调用:
class MyUIntValue(val v: UInt) { // 供Java调用的构造方法 constructor(v: Int) : this(v.toUInt()) }
Java端调用:
public static void main(String[] args) { System.out.println(new MyUIntValue(1)); }
方案2:不修改Kotlin类,在Java中显式创建UInt实例
通过Kotlin标准库提供的静态方法将int转为UInt实例,再传入构造方法:
import kotlin.UInt; public static void main(String[] args) { UInt uintValue = UIntKt.toUInt(1); System.out.println(new MyUIntValue(uintValue)); }
注:UIntKt是Kotlin标准库生成的工具类,若项目模块名特殊,类名可能会带有模块前缀(如yourmodule.UIntKt)。
内容的提问来源于stack exchange,提问作者oshai
相关产品推荐
相关产品推荐

