如何为此Kotlin类属性使用setter?

时间:2019-03-11 17:55:28

标签: java kotlin setter

我有以下用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在数组的第一个元素中设置属性?

2 个答案:

答案 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");