有人可以解释为什么这段代码以这种方式工作吗?我想制作自己的概念证明 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
为什么这两个 this.getClass.getName 不同?此外,当我实例化记录器以获得此信息时,我应该写什么:
Jan 25, 2013 2:02:07 PM hu.jonas.simple.Service whoAmI
INFO: hu.jonas.simple.Service