【发布时间】:2011-04-14 04:06:13
【问题描述】:
我编写了一个自定义注释,其中包含属性的元数据和AnnotationProcessor:
@SupportedAnnotationTypes({"<package>.Property"})
public class PropertyProcessor extends AbstractProcessor {
@Override
public boolean process(Set<? extends TypeElement> annotations,
RoundEnvironment roundEnv) {
// Get messager object
Messager messager = processingEnv.getMessager();
// Iterate through the annotations
for(TypeElement typeElement : annotations) {
// Iterate through the annotated elements
for(Element element : roundEnv.getElementsAnnotatedWith(typeElement)) {
// Get Property annotation
Property property = element.getAnnotation(Property.class);
}
}
return false;
}
}
这是一个问题,我以前使用过 Javassist,但它取决于类加载器,我认为它不适合 OSGi 应用程序。我想在编译带有Property 注解的类时更改生成的字节码。
【问题讨论】:
-
一个问题 - 为什么需要这个?不能用其他方式实现吗?
-
在不使用 APT 或此 API 的情况下,我将需要为每个属性同时注释 setter 和 getter 方法,但如果这可行,我将完全控制如何生成代码。这不是一个纯粹的商业问题,我想知道这是否可能
标签: java properties osgi bytecode code-injection