コットリンはゲッターと設定を自動生成しますが、決してそれらを参照しませんか?また、Kotlinでカスタムゲッタ/セッタを書く正しい方法は何ですか?私がmyObj.myVar = 99
と言ったら、myVar
は私が直接アクセスしているmyObj
の公開フィールドですか?ここで実際に何が起こっていますか?Kotlin - ゲッターとセッターを理解する
8
A
答えて
16
これは、いくつかの場所で回答されているが、私は、私は、Java/C#の/ C/C++からKotlinへ移行する人のための具体的な例を共有するだろうと思った、と誰が私は同じ質問を持っていた:
を私はgetterとsetterがKotlinでどのように働いていたか、特に明示的に呼び出されていない(Javaのように)方法を理解するのが難しかった。このため、フィールドとしてヴァルス/ヴァルを直接引用しているように見えたので、私は不快感を感じました。そこで、私はこれが当てはまらないことを実証するために少し実験を行いました。実際には、変数/値にアクセスするときにKotlinで呼び出される暗黙の(自動生成の)ゲッター/セッターです。違いは、デフォルトゲッタ/セッタを明示的に要求していないことです。 documentationから
- プロパティを宣言するための完全な構文は次のとおりです
var <propertyName>: <PropertyType> [= <property_initializer>]
[<getter>]
[<setter>]
そして、私の例では、私はそれがいくつか他の人のために一緒にそれをすべて持って来るのに役立ちます願っています
class modifiersEg {
/** this will not compile unless:
* - we assign a default here
* - init it in the (or all, if multiple) constructor
* - insert the lateinit keyword */
var someNum: Int?
var someStr0: String = "hello"
var someStr1: String = "hello"
get() = field // field is actually this.someStr1, and 'this' is your class/obj instance
set(value) { field = value }
// kotlin actually creates the same setters and getters for someStr0
// as we explicitly created for someStr1
var someStr2: String? = "inital val"
set(value) { field = "ignore you" }
var someStr3: String = "inital val"
get() = "you'll never know what this var actually contains"
init {
someNum = 0
println(someStr2) // should print "inital val"
someStr2 = "blah blah blah"
println(someStr2) // should print "ignore you"
println(someStr3) // should print "you'll never know what this var actually contains"
}
のですか?
関連する問題
- 1. Javaのセッターとゲッターを理解できる
- 2. インターフェイスとゲッター\セッター
- 3. セッターとゲッター/クラス
- 4. @propertyとセッターとゲッター
- 5. スーパークラスのゲッターとセッター?
- 6. ゲッターとセッターのメソッド
- 7. C#6ゲッターとセッター
- 8. Scalaのセッターとゲッター
- 9. 同期ゲッターとセッター
- 10. javascriptのゲッターとセッター
- 11. 角2セッターとゲッター
- 12. 制御ゲッターとセッター
- 13. ゲッターとセッターのプロトタイプパターン
- 14. セッターとゲッターのメッセージ
- 15. 使用ゲッターとセッター
- 16. アレイのゲッターとセッター
- 17. cakephp OOPゲッターとセッター
- 18. セッターとゲッターのエラー
- 19. セッター/ゲッターとencapusulation JavaIndexoutbounds
- 20. オブジェクトを持つゲッター/セッターを理解できない
- 21. モンゴイドモデルのセッターとゲッターをオーバーライド
- 22. Kotlin生成されたゲッターとセッターの名前を変更する
- 23. セッターとゲッターとサブクラスのトラブル
- 24. セッター/ゲッターとのgetName()とアプリケーションエラー
- 25. Springゲッターとセッターを管理する方法yguardの難読化
- 26. 自動ゲッター/セッター
- 27. C#の - 他の言語と異なるゲッター/セッターは、Javaゲッターとセッターで
- 28. セッターとゲッターをテストするには?
- 29. NetBeansでゲッターとセッターを生成する
- 30. AngularJS、ゲッターとセッターのラジオボタン
[Gettters and Setters in Kotlin]の複製があります(https://stackoverflow.com/questions/37906607/getters-and-setters-in-kotlin) – Bharatesh