tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
280
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    muss_ muss_ ist offline Mitglied
    Registriert seit
    Jul 2010
    Beiträge
    15
    Hallo zusammen,
    ich möchte eine Annotation schreiben und mein Hauptziel ist die Zeilennummer herausfinden wo der Annotation im Code steht.
    Annotation zu schreiben ist kein Problem aber weiß jemand wie ich die Zeilennummer finden kann?
    Danke im Voraus.
     

  2. #2
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    Zitat Zitat von muss_ Beitrag anzeigen
    ich möchte eine Annotation schreiben und mein Hauptziel ist die Zeilennummer herausfinden wo der Annotation im Code steht.
    Annotation zu schreiben ist kein Problem aber weiß jemand wie ich die Zeilennummer finden kann?
    Was meinst Du? Zählen?

    Oder willst Du innerhalb der Annotation die aktuelle Zeilennummer anzeigen lassen (mit einer Art von Makro oder so) ?

    Ich versteh' die Frage nicht so ganz ....

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  3. #3
    Avatar von javaDeveloper2011
    javaDeveloper2011 javaDeveloper2011 ist offline Mitglied Brokat
    Registriert seit
    Feb 2011
    Beiträge
    445
    Blog-Einträge
    5
    Hallo,

    dabei geht es auch um das eclipse-Plugin, oder?

    Definierst du dann eine Annotation, die der User deines Plugins dann 2 mal im Code anwendet und damit die Brakepoints definiert?

    Dann würde ich deine Frage mal in:
    Gibt es mit der Reflection API eine möglichkeit die Zeilennummern in denen eine selbst definierte Annotatioe steht herauszufinden?
    Und darauf befürchte ich lautet die Antwort Nein, denn bei Reflection geht es stets um Class- Method-, Annotation-, ... Objekte und um das class-File, aber nie um die .java-Datei in der es Zeilennummern giebt. Ich weiss nicht worauf das ganze hinauslaufen soll, aber wie währe es denn die .java-Datei als String einzulesen...

    Das einzige was mir an sonsten einfällt, wäre das der User die Zeilennummer nochmal explizit angeben muss. (Hier ein kleines Beispiel mit Auslesen der Annotation bei allen Metoden.

    Deine Annotation:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
     
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Breakepoint {
        int lineNo();
    }
    Quellcode des Plug-in-Users:
    Code java:
    1
    2
    3
    4
    
    @Breakepoint(lineNo = 46)
    public int seineMethode(boolean aFlag) {
    ...
    }
    Dein Quellcode zum auslesen:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    import java.lang.reflect.*;
     
    ...
     
    Method[] methoden = UserKlasse.class.getDeclaredMethods();
    for(Method methode : methoden){
        if(methode.isAnnotationPresent(Breakpoint.class){
            System.out.println("User hat Breakpoint in Zeile " + 
            methode.getDeclaredAnnotation(Breakepoint.class).lineNo() + " gesetzt.");
        } 
    }

    Bitte korriere mich, wenn ich deine Frage falsch gedeutet habe,
    javaDeveloper2011
     

  4. #4
    muss_ muss_ ist offline Mitglied
    Registriert seit
    Jul 2010
    Beiträge
    15
    Zitat Zitat von javaDeveloper2011 Beitrag anzeigen
    Hallo,

    dabei geht es auch um das eclipse-Plugin, oder?

    Definierst du dann eine Annotation, die der User deines Plugins dann 2 mal im Code anwendet und damit die Brakepoints definiert?

    Dann würde ich deine Frage mal in:

    Und darauf befürchte ich lautet die Antwort Nein, denn bei Reflection geht es stets um Class- Method-, Annotation-, ... Objekte und um das class-File, aber nie um die .java-Datei in der es Zeilennummern giebt. Ich weiss nicht worauf das ganze hinauslaufen soll, aber wie währe es denn die .java-Datei als String einzulesen...

    Das einzige was mir an sonsten einfällt, wäre das der User die Zeilennummer nochmal explizit angeben muss. (Hier ein kleines Beispiel mit Auslesen der Annotation bei allen Metoden.

    Deine Annotation:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
     
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Breakepoint {
        int lineNo();
    }
    Quellcode des Plug-in-Users:
    Code java:
    1
    2
    3
    4
    
    @Breakepoint(lineNo = 46)
    public int seineMethode(boolean aFlag) {
    ...
    }
    Dein Quellcode zum auslesen:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    import java.lang.reflect.*;
     
    ...
     
    Method[] methoden = UserKlasse.class.getDeclaredMethods();
    for(Method methode : methoden){
        if(methode.isAnnotationPresent(Breakpoint.class){
            System.out.println("User hat Breakpoint in Zeile " + 
            methode.getDeclaredAnnotation(Breakepoint.class).lineNo() + " gesetzt.");
        } 
    }

    Bitte korriere mich, wenn ich deine Frage falsch gedeutet habe,
    javaDeveloper2011
    Danke für die ausführliche Info, das ist was ich suche...
    Ich habe auch vor im Rechtsklick-Menu im Eclipse ein Eintrag wie "Annotation hinzufügen" zu erstellen, sodass der Benutzer es nicht selber schreiben muss. Kann ich vlt. so die Zeilennummer automatisch schreiben lassen?
     

  5. #5
    Avatar von javaDeveloper2011
    javaDeveloper2011 javaDeveloper2011 ist offline Mitglied Brokat
    Registriert seit
    Feb 2011
    Beiträge
    445
    Blog-Einträge
    5
    Weiss ich leider nicht, wenn dann stehts vielleicht in einem der Links oder zumindest in dem Buch zum Threma.
     

  6. #6
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    das kannst du dann direkt mit Eclipse Mitteln (JDT, Refactoring, Textedit etc.) implementieren.
    Schau mal hier:
    http://www.tutorials.de/java/253989-...einfuegen.html

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  7. #7
    muss_ muss_ ist offline Mitglied
    Registriert seit
    Jul 2010
    Beiträge
    15
    Vielen Dank für die Antworten.

    Zitat Zitat von Thomas Darimont Beitrag anzeigen
    Hallo,

    das kannst du dann direkt mit Eclipse Mitteln (JDT, Refactoring, Textedit etc.) implementieren.
    Schau mal hier:
    http://www.tutorials.de/java/253989-...einfuegen.html

    Gruß Tom
    Das sieht viel versprechend aus
    Danke.
     

Ähnliche Themen

  1. Eigene Annotation und Reflection
    Von danielm im Forum Java
    Antworten: 2
    Letzter Beitrag: 22.04.11, 22:45
  2. Annotation von Entity Beans nur an der Methode
    Von Java4U im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 06.02.09, 14:43
  3. Annotation für Pessimistisches Locking
    Von AliB im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 08.10.07, 13:40
  4. JSR181 Annotation Parameter optional
    Von zhaming im Forum Java
    Antworten: 0
    Letzter Beitrag: 20.06.07, 11:04
  5. Java 1.5.x - Enum und Annotation
    Von schnuffie im Forum Java
    Antworten: 4
    Letzter Beitrag: 07.04.05, 17:54