gpt4 book ai didi

java - Lombok SLF4J impl 继承问题

转载 作者:行者123 更新时间:2023-11-30 01:50:14 27 4
gpt4 key购买 nike

我在我的多模块 Maven 项目中遇到了 Lombok 的问题。我有两个类:

@Slf4j
public class Parent {}

@Slf4j
public class Child extends Parent {
public void m() {
log.debug("hello");
}
}

还有一个父级 Maven 项目,其中定义了 lombok 依赖项。还有一个子 Maven 项目,其中我将父项目定义为 Maven 父项目。

当我在 Child 类中使用生成的 log 实例时,发生编译错误:

[ERROR] log has private access in <Child class>

我可以通过两种方式解决这个问题:

  • 我手动为自己创建了名为“log”的私有(private)字段。
  • 我在子 Maven 项目中定义了 Lombok 依赖项。

为什么会这样呢?有任何解决方法/定义 lombok 依赖项的最佳方法吗?

感谢您的帮助。

使用:

  • Lombok 1.16.18
  • JDK 1.8
  • Maven 3.5.3

最佳答案

继承不应以任何方式影响您的问题。当您使用@Slf4j注释时,Lombok会创建私有(private)静态最终字段,并且不会继承静态字段。在您的情况下,生成的代码如下所示:

public class Parent {
private static final Logger log = LoggerFactory.getLogger(Parent.class);

public Parent() {}
}

public class Child extends Parent {
private static final Logger log = LoggerFactory.getLogger(Child.class);

public Child() {}

public void m() {
log.debug("hello");
}
}

对于多模块 Maven 项目,您需要确保正确指定模块间依赖关系。如果 lombok 位于类路径上,那么一切都应该可以完美地开箱即用。

关于java - Lombok SLF4J impl 继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56338038/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com