java - 如何为这个 Kotlin 类属性使用 setter?

标签 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 编写的带有公共(public)成员的对象,我会做类似的事情:

myObject.owners[0].userId = "001";
myObject.owners[0].userName = "Freddy"

由于对象是用 Kotlin 编码的,我需要使用 Java 中的 setter。

如何使用 setter 设置数组第一个元素的属性?

最佳答案

对于每个 Kotlin 属性 foo,您可以在 Java 中将其 getter 调用为 getFoo(),如果该属性是可变的,则可以将 setter 调用为 setFoo(值)

参见: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");

关于java - 如何为这个 Kotlin 类属性使用 setter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55107713/

相关文章:

kotlin - 从接口(interface)中的类覆盖并实现 fn

c++使用另一个类的指针设置一个类的值

java - 给定乘数的下一个数字倍数

java - 是什么导致了这个异常? for循环的构造函数是不必要的吗?

java - WifiManager 中的 startScan() 在 Android P 中已弃用

java - 返回扩展类的类型给平台声明冲突

java - Selenium>Webdriver>Java>单击模型窗口中的按钮时,触发另一个背景按钮

java - Servlet = 服务器 Applet?

java - 使用 Java 从 Chaining 方法中的 Setter 和 Getter 方法检索特定值

flutter - Dart 方法 'setRng' 没有为类定义