Ich arbeite mit Annotation Processing von Java 6, d. H. Was innerhalb javax.annotation.processing
(nicht Java 5 APT) gefunden werden kann.Was ist das Konzept dahinter: Typ - Element - Spiegel
Ich frage mich, was der konzeptionelle Unterschied zwischen den verschiedenen Element
, Type
und Mirror
Klassen ist. Da ich das nicht wirklich verstehe, ist es schwierig, einen Annotationsprozessor effizient zu programmieren. Es gibt verschiedene Methoden, die zwischen diesen Begriffen "konvertieren", aber ich bin mir nicht sicher, was ich mache, wenn ich sie benutze.
Also, zum Beispiel, lassen Sie mich eine Instanz von AnnotationMirror
haben.
Wenn ich getAnnotationType()
aufrufen, bekomme ich eine Instanz von DeclaredType
(die aus irgendeinem Grund TypeMirror
implementiert).
Dann kann ich anrufen asElement()
auf diesem und eine Instanz von Element
erhalten.
Was ist passiert?
Das Javadoc ist nicht wirklich klar, was das TypeElement ist. Ich denke, es ist mehr an die Deklaration des Typs (also der Typparameter) gebunden, während die TypeDeclaration (verwirrender Name) mehr an die Verwendung des Typs gebunden ist, wie zum Beispiel in einer Variablendeklaration. Ich bin der Meinung, dass diese beiden Begriffe im Zusammenhang mit Anmerkungen schwer zu verstehen sind. – Wolfgang
Aber nach dieser [Frage] (http://stackoverflow.com/questions/31245638/understanding-typeelement-and-declaredtype-interface-in-java), muss 'DeclareType'' MyException.class' sein – overexchange