如何在Eclipse IDE的内部类上使用@UtilityClass lombok注释



我有一个类,其中类C和类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";
}
}
}

如果它不在eclipse中工作,而在Intellij中工作,则看起来像是一个bug。

@UtilityClass的文档指出,如果我们使用此注释,类中的所有方法、内部类和字段都将标记为static。据此,类B应该变成static

现在看看抛出问题中提到的错误的代码(lombok.javac.JavacNode(,代码注释说:

// It might be an inner class. This is okay, but only if it is / can be a
// static inner class. Thus, all of its parents have to be static inner classes
// until the top-level.

因此,如果在类C上使用@UtilityClass注释,那么类B应该是static才能工作。

由于类A是用@UtilityClass注释的,所以类B本应变成static,但可能是,在上述验证过程中,它没有被识别为static

要解决此问题,需要手动将static添加到类B中。(可能还需要项目构建(。

(您也可以在lombok github页面中记录一个错误(

确保您的JDK版本不高于版本8(1.8(,因为lombok中似乎有一个错误,即@UtilityClass在JDK 9或更高版本时不会使内部类静态

https://kotlinlang.org/docs/whatsnew1720.html#support-for-kotlin-k2-编译器-插件

最新更新