我想做的是创建一个具有伴侣对象的类的实例,并能够从该类的实例访问伴侣对象中的静态字段。
classes = [Class1, Class2, Class3]
for c in classes:
print(c.__dict__)
我知道,在当前设置下,引用类实例时将不会找到种类属性。我的问题是,为了使这项工作可行,是否可以通过某种方式操纵上面的代码?
答案 0 :(得分:2)
这是您可以执行的操作:
class Person(name: String, age: Int) {
def getAge: Integer = {
age
}
def getName: String = {
name
}
def species: String = Person.species
}
object Person {
def apply(name: String, age: Int): Person = new Person(name, age)
def species = "homoSapiens"
}
object Solution extends App {
val person = Person("sarah", 18)
println(person.species)
}
答案 1 :(得分:-2)
如果您真的想通过财产拥有它,则有一种怪异的方式:
class Person(name: String, age: Integer) {
def getAge(): Integer = { age }
def getName(): String = { name }
}
trait PersonProps {
val species = "homoSapiens"
}
object Person {
def create(name: String, age: Integer) = {
new Person(name, age) with PersonProps
}
}