问题描述
public enum BindingType {
BINDING_OPEN("M1+O","Open",true),BINDING_SAVE("M1+S","Save",...
private BindingType(
final String sequence,final String keyLabel,final boolean reserved) {
this.sequence = sequence;
this.keyLabel = keyLabel;
this.reserved = reserved;
}
}
BINDING_CUSTOM("M1+U","Custom",true)
这可以使用 Byte Buddy 的 AgentBuilder
来完成吗?
解决方法
枚举只不过是枚举类型的 public static final
字段。您当然可以为枚举类型声明这样一个字段,并通过 builder.executable(isTypeInitializer())
检测静态初始值设定项,以通过调用类的构造函数将该字段设置为一个值。
此外,您可能需要检测类的 values
方法以返回具有其他值的附加常量,并使用 valueOf
方法解析附加常量。
枚举只是这种方法和字段组合的合成糖。 Byte Buddy 为创建新枚举提供了便利,但如果更改现有枚举,则需要采取一些手动步骤。