码迷,mamicode.com
首页 > 其他好文 > 详细

getLog(getClass()) 与 getLog(XXX.class) 的区别

时间:2019-09-02 19:42:57      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:etl   的区别   字段   cto   href   void   继承   pre   protect   

在实例方法中引用Log,通常定义一个实例变量:

// 在实例方法中引用Log:
public class Person {
    protected final Log log = LogFactory.getLog(this.getClass());

    void foo() {
        log.info("foo");
    }
}

注意到实例变量log的获取方式是LogFactory.getLog(this.getClass()),虽然也可以用LogFactory.getLog(Person.class),但是前一种方式有个非常大的好处,就是子类可以直接使用该log实例。例如:

// 在子类中使用父类实例化的log:
public class Student extends Person {
    void bar() {
        log.info("bar");
    }
}

由于Java类的动态特性,子类获取的log字段实际上相当于LogFactory.getLog(Student.class),但却是从父类继承而来,并且无需改动代码。

出处:https://www.liaoxuefeng.com/wiki/1252599548343744/1264738932870688

getLog(getClass()) 与 getLog(XXX.class) 的区别

标签:etl   的区别   字段   cto   href   void   继承   pre   protect   

原文地址:https://www.cnblogs.com/cag2050/p/11448078.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!