我有以下用Kotlin编写的类:
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编写的带有公共成员的对象,那么我会做类似的事情:
myObject.owners[0].userId = "001";
myObject.owners[0].userName = "Freddy"
由于对象是用Kotlin编码的,因此我需要使用Java的setter。
如何使用setter在数组的第一个元素中设置属性?
答案 0 :(得分:2)
使用getOwners
,它将返回owners
对象,然后设置值。
myObject.getOwners()[0].setUserId("001");
myObject.getOwners()[0].setUserName("Freddy");
答案 1 :(得分:2)
对于每个Kotlin属性foo
,您可以在Java中将其getter称为getFoo()
,如果该属性是可变的,则将setter命名为setFoo(value)
。
请参阅:Calling Kotlin from Java — Properties
在您的情况下,只需使用getter访问数组,获取其项并调用setter:myObject.getOwners()[0].setUserId("001");
和myObject.getOwners()[0].setUserName("Freddy");
,或将Owner
分配给局部变量:>
MyClass.Owner owner = myObject.getOwners()[0];
owner.setUserId("001");
owner.setUserName("Freddy");