如何在Eclipse IDE的内部类上使用@UtilityClass Lombok注解

gblwokeq  于 2022-10-15  发布在  Eclipse
关注(0)|答案(2)|浏览(336)

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

k3fezbri1#

如果它不能在eclipse和IntelliJ中工作,看起来就像是一个错误。
@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页面上记录错误)

eyh26e7m

eyh26e7m2#

确保您的JDK版本不高于版本8(1.8),因为在Lombok中看起来有一个bug,当JDK 9或更高版本时,@UtilityClass不会使内部类成为静态的
Https://kotlinlang.org/docs/whatsnew1720.html#support-for-kotlin-k2-compiler-plugins

相关问题