バッキングフィールドとは

  • プロパティ値を格納するために裏側で自動生成されるフィールドのこと
  • Kotlinでは、フィールドという形でのメンバ変数は直接宣言できず、プロパティ(フィールド+ getter/setter)という形をとる。privateで内部データ的なプロパティ値を別に保持しなくとも、getter/setter内で自動的に生成されたfieldというキーワードでプロパティ値にアクセスできる。

例 (Kotlin):

fieldキーワードでプロパティ値にアクセスできる。

class Sample(){
    var sample: Int = 0
        get() {
            return field
        }
        set(value) {
            field = value
        }
}

よって、下の_dataのようなプロパティ値を明示的に持たなくて良い。

class Sample(){
    private _data: Int = 0
    
    var sample: Int
        get() {
            return _data
        }
        set(value) {
            _data = value
        }
}

実際には下のようにgetter/setterも省略可能。一見フィールドのように見えるが、裏側ではgetterとsetterがバッキングフィールドにアクセスしている。

class Sample(){
    var sample: Int = 0
}

参考:

速習 Kotlin: Javaより簡単!新Android開発言語を今すぐマスター 速習シリーズ

Kotlinのプロパティとは

クラスの実装 〜 プロパティとバッキングフィールド

Leave a comment

Your email address will not be published. Required fields are marked *