无法在初始值设定项

时间:2017-08-28 09:45:14

标签: java enums constructor log4j2

我目前正在我的枚举类中使用@ Log4j2:

import lombok.extern.log4j.Log4j2;
@Log4j2
public enum Cbev2Key
{
....
....
}

我在代码中使用这个“log”变量将这样的日志放在构造函数中:

CbeV2Key(final String value, final IonType type,final boolean isMandatoryKey)
    {
        if(StringUtils.isEmpty(value) || type == null) {
            log.fatal("Empty/Null value/type not permitted value : " + value + " type : " + type);

        }

        this.type = type;
        this.isMandatoryKey = isMandatoryKey;
    }

在日志变量中,它向我显示此错误

  

“无法在初始化程序中引用静态枚举字段Cbev2Key.log。”

为什么我收到此错误?

1 个答案:

答案 0 :(得分:1)

Lombok的@Log4j2注释生成一个静态log字段:

https://projectlombok.org/api/lombok/extern/log4j/Log4j2.html

但是在静态字段之前初始化枚举元素。

因此,Enum的构造函数无法像记录器那样访问未初始化的静态。