问题描述
我想知道是否有办法用字节伙伴创建这样的枚举:
public enum EnumWithAbstractMethods {
A {
@Override
String greet() {
return "hello A";
}
},B {
@Override
String greet() {
return "hello B";
}
},C {
@Override
String greet() {
return "hello C";
}
};
abstract String greet();
}
我使用过字节好友 API 来创建枚举,但我发现没有办法做到这一点。
解决方法
您通常不会创建子类,而是使用 DynamicType.Builder::makeEnumeration
并实现该方法并从中动态确定结果。例如,您可以使用 MethodDelegation
拦截带有 @This Enum<?>
参数的调度程序。然后打开序数,返回你考虑的值。
或者,您当然可以创建四个类并手动实现枚举语义。