Как я могу легко получить имя класса случая Scala?

Данный:

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?

56
задан Gabe 16 April 2010 в 22:18
поделиться

4 ответа

def name = this.getClass.getName

Или, если вам нужно только имя без пакета:

def name = this.getClass.getSimpleName

Дополнительную информацию см. В документации java.lang.Class .

87
ответ дан 26 November 2019 в 17:10
поделиться
class Example {
  private def className[A](a: A)(implicit m: Manifest[A]) = m.toString
  override def toString = className(this)
}
16
ответ дан 26 November 2019 в 17:10
поделиться

Вы можете использовать свойство 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 устарело, и вы не должны забывать левый и правый родитель ()

20
ответ дан 26 November 2019 в 17:10
поделиться
def name = this.getClass.getName
11
ответ дан 26 November 2019 в 17:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: