助けてください、私はこの問題を解決することはできません。getterメソッドの制約が常に尊重されるようにするにはどうすればよいですか?私のクラスの形式は次のとおりです。
abstract class Element {
var name: String
var description: String
}
class Component (var name: String, var description: String) extends Element
私のプロジェクトの目的のために、私はvarを使用する必要があります。name
常に尊重しなければならない分野に制約を課したい。次のようにインスタンスを作成するときの両方Component
:
val C1 = new Component ("C1 Component", "Description of C1")
値を変更した場合の両方:
C1.name = "new value"
この方法でクラスを作成すると、次のようになります。
abstract class Element {
protected var _name : String
// Getter
final def name = _name
// Setter
final def name_= (value:String):Unit =
if (value.size < 5) println ("ERROR: Bad Value")
else _name = value
var description: String
}
class Component (protected var _name : String, var description: String) extends Element
mainメソッドでは、ここで制御できないため、次のようになります。
val C1 = new Component ("C1", "Description of C1")
しかし、後で、値を変更すると、次のようになります。
C1.name = "comp"
私はゲッターが常に尊重されることを望んでいます。どうすればよいですか?