programacion otra metodos metodo llamar lenguaje importar herencia ejemplos clases clase class scala object reflection jvm-languages

class - otra - scala ejemplos



En Scala, ¿cómo obtengo el*nombre*de un `objeto`(no una instancia de una clase)? (3)

En Scala, puedo declarar un objeto así:

class Thing object Thingy extends Thing

¿Cómo obtendría "Thingy" (el nombre del objeto) en Scala?

He oído que Lift (el marco web para Scala) es capaz de esto.


No sé qué camino es el correcto, pero esto podría lograrse mediante la reflexión de Scala:

implicitly[TypeTag[Thingy.type]].tpe.termSymbol.name.toString


Si lo declara como un case object lugar de solo un object entonces extenderá automáticamente el rasgo del Product y puede llamar al método productPrefix para obtener el nombre del objeto:

scala> case object Thingy defined module Thingy scala> Thingy.productPrefix res4: java.lang.String = Thingy


Solo obtén el objeto de clase y luego su nombre.

scala> Thingy.getClass.getName res1: java.lang.String = Thingy$

Todo lo que queda es quitar el $ .

EDITAR:

Para eliminar los nombres de los objetos adjuntos y la cola $ es suficiente para hacer

res1.split("//$").last