如何为这个 Kotlin class 属性 使用 setter?
How to use setter for this Kotlin class property?
我在 Kotlin 中编写了以下 class 代码:
class MyClass {
var color: String = ""
var action: String = ""
val owners = Array(1) {Owner()}
class Owner {
var userId: String = ""
var userName: String = ""
}
}
...我正在访问它 Java:
MyClass myObject = new MyClass();
myObject.setColor("blue");
myObject.setAction("throw");
...我希望能够设置所有者。不过,我不确定如何。如果它是一个在 Java 中用 public 成员编码的对象,我会做类似的事情:
myObject.owners[0].userId = "001";
myObject.owners[0].userName = "Freddy"
由于对象是用 Kotlin 编码的,我需要在 Java 中使用 setter。
如何在带有 setter 的数组的第一个元素中设置属性?
使用 getOwners
将 return owners
对象然后设置值。
myObject.getOwners()[0].setUserId("001");
myObject.getOwners()[0].setUserName("Freddy");
对于每个 Kotlin 属性 foo
,您可以在 Java 中将其 getter 称为 getFoo()
,如果 属性 是可变的,setter 为 setFoo(value)
.
参见:Calling Kotlin from Java — Properties
在您的情况下,只需使用 getter 访问数组,获取其项并调用 setters:myObject.getOwners()[0].setUserId("001");
和 myObject.getOwners()[0].setUserName("Freddy");
,或分配 Owner
到局部变量:
MyClass.Owner owner = myObject.getOwners()[0];
owner.setUserId("001");
owner.setUserName("Freddy");
我在 Kotlin 中编写了以下 class 代码:
class MyClass {
var color: String = ""
var action: String = ""
val owners = Array(1) {Owner()}
class Owner {
var userId: String = ""
var userName: String = ""
}
}
...我正在访问它 Java:
MyClass myObject = new MyClass();
myObject.setColor("blue");
myObject.setAction("throw");
...我希望能够设置所有者。不过,我不确定如何。如果它是一个在 Java 中用 public 成员编码的对象,我会做类似的事情:
myObject.owners[0].userId = "001";
myObject.owners[0].userName = "Freddy"
由于对象是用 Kotlin 编码的,我需要在 Java 中使用 setter。
如何在带有 setter 的数组的第一个元素中设置属性?
使用 getOwners
将 return owners
对象然后设置值。
myObject.getOwners()[0].setUserId("001");
myObject.getOwners()[0].setUserName("Freddy");
对于每个 Kotlin 属性 foo
,您可以在 Java 中将其 getter 称为 getFoo()
,如果 属性 是可变的,setter 为 setFoo(value)
.
参见:Calling Kotlin from Java — Properties
在您的情况下,只需使用 getter 访问数组,获取其项并调用 setters:myObject.getOwners()[0].setUserId("001");
和 myObject.getOwners()[0].setUserName("Freddy");
,或分配 Owner
到局部变量:
MyClass.Owner owner = myObject.getOwners()[0];
owner.setUserId("001");
owner.setUserName("Freddy");