如何从java创建kotlin UInt



我想创建一个对象:

class MyUIntValue(val v: UInt)

这在科特林工作:

fun main() {
MyUIntValue(1U)
}

但在java代码中,我得到了一个错误:

public static void main(String[] args) {
System.out.println(new MyUIntValue(1));
}
error: MyUIntValue(int) has private access in MyUIntValue

我没有在文档中找到从java创建UInt的正确方法是什么?

UInt在Kotlin中实现为内联类。接受内联类的函数是用";损坏的";名称,因此它们通常不能从Java中调用。您可以通过给函数一个显式的@JvmName来禁用名称篡改。我认为你不能为类构造函数这样做,所以你需要声明一个单独的函数来调用构造函数。

class MyUIntValue(val v: UInt)
@JvmName("createMyUIntValue")
fun createMyUIntValue(v: UInt) = MyUIntValue(v)

根据文档,这是使createMyUIntValue可以从Java代码中调用的推荐方法。

最新更新