Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
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?
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...Gibt es mit der Reflection API eine möglichkeit die Zeilennummern in denen eine selbst definierte Annotatioe steht herauszufinden?
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface Breakepoint {
int lineNo();
}
@Breakepoint(lineNo = 46)
public int seineMethode(boolean aFlag) {
...
}
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.");
}
}
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:
Quellcode des Plug-in-Users:Java:import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Retention(RetentionPolicy.RUNTIME) public @interface Breakepoint { int lineNo(); }
Dein Quellcode zum auslesen:Java:@Breakepoint(lineNo = 46) public int seineMethode(boolean aFlag) { ... }
Java: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
Hallo,
das kannst du dann direkt mit Eclipse Mitteln (JDT, Refactoring, Textedit etc.) implementieren.
Schau mal hier:
http://www.tutorials.de/java/253989-eclipse-jdt-methoden-abschlusskommentare-einfuegen.html
Gruß Tom