有没有一种方法可以在所有对象之间共享变量(由同一类型实例化)?考虑下面的简单程序。两个对象name
和name2
具有相同的类型A
。有没有办法在两个实例化properyList
和name
内连接name2
?
class A {
var properyList = List[String]()
def printProperties(): Unit = {
println(properyList)
}
}
object Experiment {
def main(args: Array[String]): Unit = {
val name = new A
val name2 = new A
name.properyList = List("a property")
name.printProperties()
name2.printProperties()
}
}
输出是
List(a property)
List()
有什么方法可以更改类定义,以便仅更改其中一个对象中的
.properyList
即可在所有实例中更改它? 最佳答案
您似乎在寻找类似Java静态字段的内容。
在scala中,您通常可以通过使用随播对象来实现类似目的:
object Main extends App {
class A {
import A._
def printProperties(): Unit = {
println(properyList)
}
}
object A {
private var properyList = List[String]()
def addProperty(prop: String): Unit = {
properyList ::= prop
}
}
val name = new A
val name2 = new A
A.addProperty("a property")
name.printProperties()
name2.printProperties()
}