Dada una instancia de una clase, podemos obviamente devolver su nombre:Scala: Obtener el nombre de la clase del rasgo se mezcla en
trait MixedInClassDiscovery {
val className = this.getClass.getName
}
class AClass extends MixedInClassDiscovery {
...
this.className // returns "AClass"
...
}
Pero de esta manera utiliza la reflexión, una vez para cada instancia de AClass
. ¿Se puede hacer lo mismo una vez para cada clase?
Una solución que me viene a la mente es mezclarla en objetos complementarios en lugar de clases.
No, este código aún hace una llamada de reflexión para cada instancia. En realidad, para cada llamada 'className', aunque esto puede ser trivialmente corregido. –