我正在使用Java util Logger。根据Logger.getLogger方法的文档说,“为命名子系统查找或创建记录器。如果已经创建了具有给定名称的记录器,则将其返回。否则将创建一个新的记录器。”每个类(class)只叫一次会不会有任何好处呢?

选项1:

public class Myclass
    static Logger logger = Logger.getLogger(Myclass.class);

    public void method1() {
        logger.log(...);
    }

    public void method2() {
        logger.log(....);
    }
}

选项2:
public class Myclass {
    public void method1() {
        Logger.getLogger(Myclass.class).log(...);
    }

    public void method2() {
        Logger.getLogger(Myclass.class).log(...);
    }
}

最佳答案

有两个非常不重​​要的原因,为什么拥有一个静态(可能是最终的)实例比一直调用getLogger更好。

  • (我认为)它使代码更易于阅读。
  • 如果您始终调用Logger.getLogger,您将付出很小的性能损失。除非您在一个紧密的循环中调用了数百万次,否则不必担心,但是它就在那里。

  • 也就是说,个人偏爱远比这两个原因中的任何一个都重要。选项1是一种常见方法,但是如果您更喜欢选项2,则一定要使用它。不会伤害您的代码。

    关于java - 每次需要时使用Logger.getLogger()或每个类创建一次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6222365/

    10-10 21:46