我有一个类,其中类C上的@UtilityClass
注解和类D上的@UtilityClass
在eclipse IDE中会出现错误,但在IntelliJ中工作得很好
@UtilityClass自动使类成为静态的,但是,不能使这个类成为静态的。
无法在类C和类D上使用@UtilityClass注解。已安装Lombok v1.18.20 "Envious Ferret"
。
@UtilityClass
public class A {
@UtilityClass
public class B {
public final String name = "name";
public final String id = "id";
@UtilityClass
public class C {
public final String OVER = "over.draft";
public final String ADD = "add.draft";
}
@UtilityClass
public class D {
public final String OVER = "over.published";
public final String ADD = "add.published";
}
}
}
2条答案
按热度按时间k3fezbri1#
如果它不能在eclipse和IntelliJ中工作,看起来就像是一个错误。
@UtilityClass
的文档指出,如果我们使用这个注解,类中的所有方法、内部类和字段都将被标记为static
。如此一来,B
类应该变成static
类。现在看一下抛出上述错误的代码(
lombok.javac.JavacNode
),代码注解说:因此,如果在类
C
上使用了@UtilityClass
注解,则类B
应该是static
才能工作。由于类
A
被注解为@UtilityClass
,所以类B
应该已经成为static
,但在上述验证期间,它可能不被识别为static
。要解决此问题,需要手动将
static
添加到类B
。(可能还需要构建项目)。(您也可以在Lombok GitHub页面上记录错误)
eyh26e7m2#
确保您的JDK版本不高于版本8(1.8),因为在Lombok中看起来有一个bug,当JDK 9或更高版本时,@UtilityClass不会使内部类成为静态的
Https://kotlinlang.org/docs/whatsnew1720.html#support-for-kotlin-k2-compiler-plugins