[英]Lombok SLF4J impl inheritance issues
我在多模塊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>
我可以通過兩種方式解決該問題:
為什么這樣? 有什么解決方法/定義lombok依賴項的最佳方法嗎?
謝謝你的幫助。
使用:
繼承不會以任何方式影響您的問題。 當您使用@Slf4j
批注時,Lombok會創建private static final
字段,並且static
字段不會被繼承。 在您的情況下,生成的代碼如下所示:
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在類路徑中,則所有功能都可以在開箱即用的情況下正常運行。
我發現了為什么子項目的依賴項樹中的Lombok依賴項在提供的范圍內。 我在依賴項中添加了Lombok,然后正確生成了該字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.