【问题标题】:lombok log annotation is not working for static methodslombok 日志注释不适用于静态方法
【发布时间】:2020-06-22 10:33:25
【问题描述】:

我正在尝试使用 lombok 的 @Slf4j 注释。它适用于非静态方法,但我无法将它们用于静态方法,例如:

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class MyClass {

    public static void staticMethod() {
        log.info(""); //build error
        //code
    }

    public void nonStaticMethod() {
        log.info(""); //builds ok
        //code
    }

更具体地说,构建错误是:

Error:(17, 9) java: non-static variable log cannot be referenced from a static context

所以要么我遗漏了一些东西,要么这根本不是这样做的方法,但让我有些困惑的是other answers 似乎表明这种用法是正确的。有谁知道我做错了什么?感谢您的帮助。

【问题讨论】:

  • 但是注释添加静态日志,你有额外的日志成员吗?
  • 对我来说看起来不错,除了最后缺少的 } 。 Lombok 的文档明确指出 log 是静态的和最终的:projectlombok.org/api/lombok/extern/slf4j/Slf4j.html 所以这对我来说似乎是一个错误。您是否尝试过使用另一个 Lombok 版本?除此之外,您当然可以自己声明“日志”。
  • 我运行你的代码它没有显示任何错误你使用的是哪个版本

标签: java lombok


【解决方案1】:

请与 Delombok 核实在您的情况下 lombok 究竟会生成什么。

通常记录器应该是一个静态字段。

不过有一个配置:

lombok.log.fieldIsStatic = [true | false] (default: true)

来自文档:通常生成的记录器是一个静态字段。通过将此键设置为 false,生成的字段将改为实例字段。

当然,如果该字段是非静态的,则不能像 java 中一样从静态方法中使用它

link 到文档

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 2019-11-18
    • 2020-04-13
    • 1970-01-01
    • 2022-01-15
    • 2021-08-15
    • 1970-01-01
    相关资源
    最近更新 更多