私はKotlinに非常に新しいですし、Javaからそれ1つのプロジェクトを移行しようとしています。私はKotlinのプロパティと可視性スコープとともにそれらのgetter /セッターと混同ビットです。
私は何を達成したいことは次のとおりです。
public class Foo {
private int number;
public int getNumber() {
return number;
}
public void increment() {
number++;
}
}
だから、基本的に私は、私有財産を持つクラスを作成する必要がありますnumber
。このプロパティは、パブリックゲッターでアクセスする必要がありますが、それはセッターを持つべきではありません。また、このプロパティは、その値は以下のようにいくつかの方法を使用して変更することができるように、内部的に変更可能でなければなりませんincrement()
。
私の知る限り理解し、私はそれを宣言することはできませんval
、その場合には、それもクラスのインスタンス内から、完全に不変になるので、私はそれをインクリメントすることはできませんので、。それがあるべきように見えますvar
。しかし、私は、プロパティ自体は可能にするオプションが表示されないprivate
と、このプロパティは、であるためにゲッターをpublic
、プロパティとそのゲッター/セッターは同じ可視性スコープを持つべきであると思われるので、...
あなたがのIntelliJを使用する場合は、単にKotlinクラスにコードを貼り付けることができ、次を受けています:
class Foo {
var number: Int = 0
private set
fun increment() {
number++
}
}
そして、これは基本的に、また、あなたの問題への答えです...
private set
セッターが唯一の民間表示されていることを伝えます。だから、中からアクセスすることができFoo
ますが、ない外から。0
あなたは(Javaのとは対照的に)明示的に設定します。その後:によってプロパティをデフォルトと機能がありますpublic
。