从类实例访问伴随对象的属性

时间:2019-02-27 16:50:54

标签: scala

我想做的是创建一个具有伴侣对象的类的实例,并能够从该类的实例访问伴侣对象中的静态字段。

classes = [Class1, Class2, Class3]

for c in classes:
    print(c.__dict__)

我知道,在当前设置下,引用类实例时将不会找到种类属性。我的问题是,为了使这项工作可行,是否可以通过某种方式操纵上面的代码?

2 个答案:

答案 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
  }
}