我想创建一个对象:
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代码中调用的推荐方法。