2017-05-02 4 views
-6

Wie Sie sehen können, habe ich 3 verschiedene Annotationsklassen. Alle 3 sind identisch mit Ausnahme des Namens der Klasse. Die einzige, die erscheint, wenn ich für Tree.getAnnotations() aufrufen, ist die Anmerkung @Element.Nur eine Annotation zeigt

@Element(name = "node") 
public class Tree<T> { 

    private Tree<T>[] children = null; 
    private T value; 

    public Tree(T v, Tree<T>[] trees){ 
     children = trees; 
     value = v; 
    } 

    public Tree(T v){ 
     value = v; 
    } 

    @SubElements(name = "subnodes") 
    public Tree<T>[] getChildren(){ 
     return children; 
    } 

    @ElementField(name = "value") 
    public T getValue(){ 
     return value; 
    } 

} 

Dies ist die Annotation-Klasse:

import java.lang.annotation.Retention; 
import java.lang.annotation.RetentionPolicy; 

@Retention(RetentionPolicy.RUNTIME) 
public @interface Element { 

    String name(); 

} 
+6

Bitte nicht Screenshots verbinden, sondern den Code direkt eingeben –

+0

Es tut mir leid, aber ich weiß nicht, wie das geht –

+2

@AntonGustafsson Kopieren + Einfügen? – assylias

Antwort

1

Die Klasse in der Tat nur eine Anmerkung hat. Die anderen beiden gehören zu den Klassenmethoden. Um zu ihnen zu gelangen, würden Sie etwas tun wie:

Method getValue = Tree.class.getMethod("getValue"); //get the method 
getValue.getAnnotations(); //get annotations, only ElementField in this case 

Das gleiche für jede andere Methode.

+0

So wie ich zugreifen soll Sie? das erste Mal mit diesem. –

+1

@AntonGustafsson Bearbeitet fügen Sie ein Beispiel – kaqqao

+0

@kaqqao danke, ich hatte meine Hände voll bei der Arbeit – cristianhh