给我一些帮助,我只是不能解决这个问题。 如何确保始终遵守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
在主要方法,因为我这里没有控制权:
val C1 = new Component ("C1", "Description of C1")
但只有后来,当我改变的值:
C1.name = "comp"
我希望我的getter总是被尊重。 我该怎么做?
它并不能解决问题。 Plus:错误:类组件需要是抽象的,因为没有定义类型为String的元素中的变量_name(请注意,需要初始化变量 \t以定义) – user1826663
@ user1826663因此定义它。 –
对不起,但它仍然给我错误。错误:“重新分配给val”为“this.name = name”。 如果我将var _name设置为私有,那么在给她分配一个值之后。 – user1826663