Kotlin:のみゲッターとプライベート可変プロパティ

ドミトロ・チトフ:

私は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

また、チェックKotlin基準に関する特性(具体的には、ゲッター/セッター)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=119802&siteId=1