ich eine benutzerdefinierte Anmerkung enthält Metadaten für eine Eigenschaft geschrieben und ein AnnotationProcessor
:Java 6 - Annotation-Prozessor und Code zusätzlich
@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;
}
}
Hier ist die Frage, habe ich Javassist vor, aber es war abhängig von den Klassenlader verwendet und ich denke, es ist nicht für OSGi-Anwendungen geeignet. Ich möchte den generierten Bytecode ändern, wenn eine Klasse mit Property
Annotation kompiliert wird.
eine Frage - warum wird das benötigt? Kann es nicht auf andere Weise erreicht werden? – Bozho
ohne APT oder diese API zu verwenden, muss ich sowohl die Setter- als auch die Getter-Methode für jede Eigenschaft annotieren, aber wenn dies funktioniert, habe ich vollständige Kontrolle darüber, wie der Code generiert wird. das ist keine reine betriebsfrage, ich möchte wissen, ob das möglich ist oder nicht –