gpt4 book ai didi

java - Kotlin:只有 getter 的私有(private)可变属性

转载 作者:行者123 更新时间:2023-12-03 18:18:59 25 4
gpt4 key购买 nike

我是 Kotlin 的新手,正在尝试将一个项目从 Java 迁移到它。我对 Kotlin 的属性和它们的 getter/setter 以及可见性范围感到有点困惑。

我想实现的是:

public class Foo {

private int number;

public int getNumber() {
return number;
}

public void increment() {
number++;
}

}

所以基本上我需要创建一个具有私有(private)属性 number 的类。这个属性应该可以被 public getter 访问,但是它不应该有一个 setter。此外,此属性应该是内部可变的,以便可以使用 increment() 等方法更改其值。

据我所知,我不能将它声明为 val,因为在那种情况下,它是完全不可变的,即使是在类的实例中,所以我不能增加它。看起来应该是 var。但是后来我没有看到使属性本身成为 private 并将此属性的 getter 设为 public 的选项,因为看起来属性及其 getters/setters应该具有相同的可见范围...

最佳答案

如果您使用 Intellij,您只需将代码粘贴到 Kotlin 类中,就会收到以下内容:

class Foo {

var number: Int = 0
private set

fun increment() {
number++
}
}

这基本上也是您问题的答案...

private set 表示 setter 仅私下可见。因此您可以在 Foo 中访问它,但不能从外部访问它。您显式设置的 0(与 Java 不同)。然后:默认情况下属性和函数是public

同时检查 Kotlin reference regarding properties (specifically getter/setter)

关于java - Kotlin:只有 getter 的私有(private)可变属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52076700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com