gpt4 book ai didi

java - 如何使用 javassist 在枚举字段中创建方法

转载 作者:行者123 更新时间:2023-12-02 03:25:47 28 4
gpt4 key购买 nike

我正在尝试在枚举中动态插入一个方法。

 private void loadEnums(ServletContextEvent sce) {
List<Class<?>> classes = CPScanner.scanClasses(new ClassFilter().packageName("br.com.alinesolutions.anotaai.*").annotation(EnumSerialize.class));
CtClass ctClass = null;
EnumMemberValue enumMemberValue;
try {
for (Class<?> clazz : classes) {
if (!Enum.class.isAssignableFrom(clazz)) {
throw new RuntimeException("class " + clazz + " is not an instance of Enum");
}
ClassPool.getDefault().insertClassPath(new ClassClassPath(clazz));
ctClass = ClassPool.getDefault().get(clazz.getName());
for (CtField field : ctClass.getFields()) {
System.out.println(field);
//CtMethod m = CtNewMethod.make("public String getType() { return this.toString(); }", ctClass);
//ctClass.addMethod(m);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

如何在枚举字段中创建方法?

最佳答案

我假设您尝试在枚举中创建一个方法,即

enum Foo {
BAR {
void qux() { }
}
}

Java 编译器通过创建一个特定的类(该类是 Foo 的子类)并将该方法添加到此类中来创建此类方法。您需要从 Foo 中删除 final 修饰符,创建这样的子类并替换为此创建枚举字段的静态初始值设定项。

关于java - 如何使用 javassist 在枚举字段中创建方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38936376/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com