Est-ce que quelqu'un peut expliquer pourquoi ce code fonctionne de cette manière? Je voulais créer ma propre preuve de concept de trait Loggable. Le plan était d'instancier une instance de logger afin que les classes héritées n'aient pas à faire ce travail. Mais apparemment ce n'est pas ce que je voulais.
Voici le code :
package hu.jonas.simple
trait Loggable {
val logger = java.util.logging.Logger.getLogger(this.getClass.getName)
def whoAmI = {
logger.info(this.getClass.getName)
}
}
class Service extends Loggable {
def answer = {
whoAmI
}
}
object Main extends App {
new Service().answer
}
Cela a produit le message suivant dans le journal :
25 janv. 2013 14:02:07 hu.jonas.simple.Loggable$class whoAmI
INFO: hu.jonas.simple.Service
Pourquoi les deux this.getClass.getName sont-ils différents? Et de plus que devrais-je écrire lorsque j'instancie le logger afin d'obtenir ceci :
25 janv. 2013 14:02:07 hu.jonas.simple.Service whoAmI
INFO: hu.jonas.simple.Service