Ключ ломбок уже зарегистрирован
Я получаю 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"
);
}