如何解决如果类具有`org`字段,则@ Slf4j会产生“非静态变量org无法引用”
为什么,如果我的班级有一个org
字段,则不能使用@Slf4j
Lombok日志注释。以下代码将在第3行产生编译错误:
MyClass.java:[3,1]非静态变量org无法从静态上下文中引用
import lombok.extern.slf4j.Slf4j;
@Slf4j
class MyClass {
String org;
void printDebug() { log.debug("Org: " + org); }
}
Lombok文档(projectlombok.org/features/log)声称它添加了一个log
字段。为什么与org
冲突?
解决方法
如果在IntelliJ中,右键单击->重构-> Delombok-> @Log(和朋友),您将看到生成的字段初始化以 = org.slf4j...
开头:
private static final Logger log = org.slf4j.LoggerFactory.getLogger(MyClass.class);
// ^^^ - this is ambiguous
这会与您的org
字段产生冲突:
String org;
// ^^^
Lombok团队可以通过注入import org.slf4j.LoggerFactory
来解决此问题,但他们可能认为对该修复程序的需求不是很高。这是龙目岛贡献者的观点:
...这是Java语言的一个障碍,它对两个完全不同的概念使用相同的符号。不知道在lombok中可以做什么来解决此问题,而不在其他地方创建其他问题。 [REF]
解决方案:因此,如果您有org
字段,只需将import lombok.extern.slf4j.Slf4j;
和@Slf4j
替换为:
import static org.slf4j.LoggerFactory.getLogger;
private static final Logger log = getLogger(MyClass.class);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。