このコードがそのように機能する理由を誰か説明できますか? Loggable トレイトの概念実証を自分で作成したかったのです。計画は、継承されたクラスがその作業を行う必要がないように、ロガー インスタンスをインスタンス化することでした。しかし、私が見ることができるように、これは私が望んでいたものではありません.
コードは次のとおりです。
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
}
次のログ メッセージが生成されました。
Jan 25, 2013 2:02:07 PM hu.jonas.simple.Loggable$class whoAmI
INFO: hu.jonas.simple.Service
2 つの this.getClass.getName が異なるのはなぜですか? さらに、これを取得するためにロガーをインスタンス化するときに何を書く必要がありますか:
Jan 25, 2013 2:02:07 PM hu.jonas.simple.Service whoAmI
INFO: hu.jonas.simple.Service