【发布时间】:2016-05-03 19:22:59
【问题描述】:
我在查看我工作中的一些 Java 代码时注意到,当我们在每个类中初始化日志框架时,我们会看到类似的内容:
private final Logger log = Logger.getLogger(Foo.class);
这让我想到,我们有什么理由使用Foo.class 而不是:
private final Logger log = Logger.getLogger(this.getClass());
这仅仅是一种偏好,还是有实际理由偏爱其中一种?
编辑:最初的代码 sn-ps 引用了静态成员,显然不会编译。
【问题讨论】:
-
如果您在非静态上下文中,您可以使用其中任何一个,但它们属于不同类型:
Foo.class属于Class<Foo>类型;aFoo.getClass()的类型为Class<? extends Foo>。 -
我的错,我复制并粘贴了日志代码,并没有注意到其中的
static。那不是故意的。我将编辑原始问题。
标签: java