如何为这个 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");