Data un'istanza di una classe, si può ovviamente tornare il suo nome:Scala: ricevendo il nome della classe il tratto è mescolato in
trait MixedInClassDiscovery {
val className = this.getClass.getName
}
class AClass extends MixedInClassDiscovery {
...
this.className // returns "AClass"
...
}
Ma in questo modo utilizza la riflessione, una volta per ogni istanza di AClass
. Lo stesso può essere fatto una volta per ogni classe, invece?
Una soluzione che viene in mente è quella di combinarlo in oggetti complementari anziché in classi.
No, questo codice esegue ancora una chiamata di riflessione per ogni istanza. In realtà, per ogni chiamata di 'className', anche se questo può essere risolto in modo banale. –