は、我々は「名前」プロパティを持つクラスを持っているとしましょう:シンプルScalaのゲッター/セッターのオーバーライド
class SuperFoo(var name: String)
私はこれを無効にしたい場合は、通話の周りにいくつかのロックを追加し、たとえばする:
class SubFoo(n: String) extends SuperFoo(n) {
val lock = new ReentrantLock
override def name(): String =
{
lock.lock
try {
super.name
} finally {
lock.unlock
}
}
override def name_=(arg: String): Unit = {
lock.lock
try {
super.name = arg
} finally {
lock.unlock
}
}
}
これを正しく実装する方法
super may be not be used on variable name
任意のアイデア:
上記は、コンパイルエラーを生成しますか? (つまり、getter &セッターをオーバーライドしてロックを追加します)。ありがとう!
コンパイラは私が変数をオーバーライドしていると思うようです:getterからsuper.nameステートメントを削除した場合、このエラーメッセージが表示されます: "タイプStringのクラスSuperFooでの変数名のオーバーライド、メソッド名は変更可能変数をオーバーライドできません" – Nikolaos