java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java枚举名注解属性值

如何将Java枚举名称作为注解的属性值实现详解

作者:javalover

这篇文章主要为大家介绍了如何将Java枚举名称作为注解的属性值实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、前言

二、方案

方案一:名称属性 + 外部名称接口

@lombok.Getter
@lombok.AllArgsConstructor
public enum CommonCacheConfig {
  QUOTE_LEVEL(CommonCacheConstant.QUOTE_LEVEL, 2);
  private final String name;
  private final int ttl;
}
public interface CommonCacheConstant {
    String QUOTE_LEVEL = "QUOTE_LEVEL";
}

使用:@Cacheable(cacheNames = CommonCacheConstant.QUOTE_LEVEL)

方案二:名称属性 + 内部名称接口

public enum CommonCacheConfig {
  QUOTE_LEVEL(Constant.QUOTE_LEVEL, 2);
  private final String name;
  private final Integer ttl;
  public interface Constant {
      String QUOTE_LEVEL = "QUOTE_LEVEL";
  }
}

使用:@Cacheable(cacheNames = CommonCacheConfig.Constant.QUOTE_LEVEL)

方案三:Lombok 的 FieldNameConstants

@lombok.Getter
@lombok.AllArgsConstructor
@lombok.experimental.FieldNameConstants(onlyExplicitlyIncluded = true)
public enum CommonCacheConfig {
  @FieldNameConstants.Include QUOTE_LEVEL(2);
  private final Integer ttl;
}

使用:@Cacheable(cacheNames = CommonCacheConfig.Fields.QUOTE_LEVEL)

注意:FieldNameConstants 的 onlyExplicitlyIncluded 需设置为 true,否则 按枚举的属性(如 ttl)生成,同时在 枚举项前加 @FieldNameConstants.Include

三、总结

以上就是如何将Java枚举名称作为注解的属性值实现详解的详细内容,更多关于Java枚举名称作为注解属性值的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文