Данный:
case class FirstCC {
def name: String = ... // something that will give "FirstCC"
}
case class SecondCC extends FirstCC
val one = FirstCC()
val two = SecondCC()
Как я могу добраться "FirstCC"
от one.name
и "SecondCC"
от two.name
?
def name = this.getClass.getName
Или, если вам нужно только имя без пакета:
def name = this.getClass.getSimpleName
Дополнительную информацию см. В документации java.lang.Class .
class Example {
private def className[A](a: A)(implicit m: Manifest[A]) = m.toString
override def toString = className(this)
}
Вы можете использовать свойство productPrefix
класса case:
case class FirstCC {
def name = productPrefix
}
case class SecondCC extends FirstCC
val one = FirstCC()
val two = SecondCC()
one.name
two.name
NB
Если вы перейдете к scala 2.8, расширение класса case устарело, и вы не должны забывать левый и правый родитель ()