java - 基于枚举字段的 Java 类
问题描述
我在这里处理 JWT 并设置自定义字段。所有这些自定义字段都在枚举中描述:
public enum JwtFields {
userId,
manyOtherCustomFieldsBellow,
blaBlaBla
}
因此,每当我创建令牌而不是为键传递字符串时,我都会使用枚举,因为它更快更安全。
Claims claims = Jwts.claims().setSubject(userId);
claims.put(JwtFields.someCustomFieldFromEnum.name(), "someValue")
现在,一旦我检查接收到的令牌是否有效并且所有必要的自定义字段都存在,我想将其反序列化到某个TokenDecoded
类并将其附加到请求有效负载,因此每当我处理请求时,我都会拥有所有值和字段来自 JWT 令牌。
但是,该反序列化类几乎包含枚举中的所有字段,如果明天我将向枚举添加新字段,我还必须手动更新我的TokenDecoded
类以包含该新的自定义字段。
问题:
我怎样才能使这个TokenDecoded
类基于枚举字段,所以如果我向枚举添加一个新字段,它将自动出现在TokenDecoded
?是否涉及反射?还是可以更简单地实现?
解决方案
Lombok提供了一个相反的功能:如果你在一个类中定义你的字段,你可以注释它以@FieldNameConstants(asEnum = true)
根据字段名称生成一个枚举。或者,没有asEnum
参数,public static final String
如果您只需要将其作为字符串,您将获得字段的 s。
推荐阅读
- php - 查询参数和 URL 重写和 URL 阻塞
- javascript - 无法将数组过滤到数组中
- ubuntu - Ubuntu 18.04 安装 kernel-headers-$(uname -r) 总是失败?
- apl - 这些代码行对这个 APL 变量的数据类型有什么改变?
- javascript - 为什么marginTop在设置后改变了?
- php - 在命令中重用代码,即创建一个 BaseCommand 以重用“使用”语句、参数和公共变量
- html - 带有子选项卡的垂直选项卡 Bootstrap
- java - Java,创建可重用线程不安全对象的缓存
- android - TextWatcher 不工作我正在使用 Android Studio Kotlin
- react-native - 在 Expo Web 中出现意外的类型号应为 URI 字符串错误