Ключ ломбок уже зарегистрирован

Я получаю IllegalArgumentException ключ уже зарегистрирован на пользовательском обработчике lombok.

@ProviderFor(EclipseAnnotationHandler.class)
public class HandleEntityData extends EclipseAnnotationHandler<EntityData> {

@Override
    public void handle(AnnotationValues<EntityData> annotation,
            Annotation ast,
            EclipseNode annotationNode) {

        handleFlagUsage(
             annotationNode, 
             new ConfigurationKey<FlagUsageType>("lombok.entity.flagUsage", 
                    "Emit a warning or error if @EntityData is used.") {}, 
                        "@EntityData"
        ); 


}

Я уже проверил, что ключ уникален. И так интересно, если у кого-нибудь были идеи, почему?

1 ответ

Решение

Нашел ответ на свой вопрос. По сути, ключи CONFIGURATION перемещены как отдельная статическая константа, чтобы они не создавались каждый раз handle() называется. (Идентификационные данные ключевого объекта, похоже, возвращаются к Object equals/hashcode.)

@ProviderFor(EclipseAnnotationHandler.class)
public class HandleEntityData extends EclipseAnnotationHandler<EntityData> {

 public final static ConfigurationKey CONFIGURATION_KEY = new ConfigurationKey<FlagUsageType>("lombok.entity.flagUsage", 
                    "Emit a warning or error if @EntityData is used.") {};

@Override
    public void handle(AnnotationValues<EntityData> annotation,
            Annotation ast,
            EclipseNode annotationNode) {

        handleFlagUsage(
             annotationNode, 
             CONFIGURATION_KEYS, 
                        "@EntityData"
        ); 


}
Другие вопросы по тегам