[解決済み] Kotlinのゲッターとセッター
2022-10-11 23:15:11
質問
Javaでは、例えば、私は自分自身でゲッターを書くことができます(IDEによって生成された)またはlombokの@Getterのようなアノテーションを使用します - これは非常に簡単でした。
しかしKotlinでは のゲッターとセッターをデフォルトで持っています。 . しかし、私はそれらを使用する方法を理解することはできません。
Javaに似たようなものを作りたいのですが。
private val isEmpty: String
get() = this.toString() //making this thing public rises an error: Getter visibility must be the same as property visibility.
では、ゲッターはどのように機能するのでしょうか?
どのように解決するのか?
Kotlinではゲッターとセッターは自動生成されます。と書くと
val isEmpty: Boolean
以下のJavaコードと同じです。
private final Boolean isEmpty;
public Boolean isEmpty() {
return isEmpty;
}
あなたの場合、privateアクセス修飾子は冗長です - isEmptyはデフォルトでプライベートであり、ゲッターによってのみアクセスすることができます。オブジェクトのisEmptyプロパティを取得しようとするときは、実際にgetメソッドを呼び出すことになります。Kotlinのgetter/setterをより理解するために:以下の2つのコードサンプルは等しいです。
var someProperty: String = "defaultValue"
と
var someProperty: String = "defaultValue"
get() = field
set(value) { field = value }
また、私が指摘したいのは
this
はあなたのプロパティではなく、クラスのインスタンスであるということです。もし、ゲッターやセッターの中でフィールドの値にアクセスしたい場合は、予約語の
field
を使うことができます。
val isEmpty: Boolean
get() = field
もし、getメソッドをパブリックアクセスで持ちたいだけなら、このコードを書くことができます。
var isEmpty: Boolean
private set
setアクセサの近くにあるprivate修飾子により、この値を設定できるのはオブジェクト内部のメソッドのみです。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン