2016-07-13 12 views
6

Wie mache ich eine Referenz in Javadoc auf einen Methodenparameter, so dass die Referenz refaktoriert werden kann?
Zum Beispiel:Refactorable Verweis auf einen Methodenparameter in Javadoc

public class A { 

    private int field; 

    /** 
    * @param p 
    * {@link #field} is initialized using the value of p. 
    */ 
    void foo(int p) 
    { 
     //... 

    } 
}  

Wenn ich Parameter p in dem obigen Code umbenennen, ich will

"... den Wert von p mit"

Text entsprechend zu ändern (genauso wie das Umbenennungsfeld sich ändert {@link #field}).
Ich lese this alten Beitrag, und einige weitere Quellen, aber konnte keinen Weg finden, es zu tun.
Unterstützt javadoc es?

+0

Die Q & A, zu der Sie eine Verbindung hergestellt haben, zeigen ziemlich deutlich, dass es in JavaDoc kein solches Feature gibt.Warum sollte diese Frage nicht als Duplikat geschlossen werden? –

Antwort

1

Aufgrund der Java-Löschung sind die Argumentnamen der Methoden flüchtig, sie sind nicht Teil der statischen Klassendefinition. Daher wird void foo(int p), das in void foo(int x) geändert wird, nicht als Refactoring betrachtet, da es garantiert ist, dass es die Logik des Programms in keiner Weise beeinflusst (außer das Argument überlädt ein Klassenfeld).

So kann in der Javadoc nicht eine statische Verbindung, die das Argument Methode identifiziert. Die bloße Tatsache, dass sich das Wort nach @param ändert, wenn Sie die Methode umgestalten, ist ein Gefallen der IDE.

1

Haben Sie versucht, Eclipse-Javadoc-Einstellungen zu konfigurieren? Fenster-> Einstellungen, Java-> Compiler-> Javadoc. Überprüfen Sie die Prozess Javadoc Kommentare Option.

Auch wenn Sie überprüfen Window-> Einstellungen-> Java-> Editor-> Typing-> Javadoc und Kommentar Regionen + Javadoc Tags hinzufügen es die appropiated javadoc Tags hinzufügen. Sobald Sie beide aktiviert haben, warnt Eclipse Sie vor den falschen Parametern und Sie können ctrl verwenden, um es "schnell zu reparieren".

+2

Vielen Dank für die Antworten. Diese Optionen sind hilfreich. Sie helfen mir nicht bei dem Problem, das ich angesprochen habe. – c0der

2

Ihre IDE kann den Namen umgestalten, wenn Sie ihn nach @param setzen (getestet in Eclipse), aber nicht, wenn Sie an anderer Stelle im Kommentar darauf verweisen. Aus sprachlicher Sicht gibt es keinen Grund, dies zu tun. Warum nicht einfach @param p {@link #field} is initialized using this value. schreiben?

+0

Vielen Dank für Ihre Antwort. Ja, ich weiß, dass es für @param p und etwas Text funktioniert. Es funktioniert nicht für 'irgendeinen Text @param p' – c0der

1

IntelliJ IDEA wird den Parameternamen überall im JavaDoc-Kommentar umgestalten, solange Sie ihn in geschweifte Klammern setzen, z. {@param p}

/** 
* @param p 
* {@link #field} is initialized using the value of {@param p}. 
*/ 

Auch Java Typ Löschung (wie in der akzeptierten Antwort erwähnt) hat nichts mit dem Umfang von Variablennamen zu tun. Type Erasure ist der Kompromiss, den Java-Designer implementiert haben, um Java Generics hinzuzufügen, aber die Sprache immer noch abwärtskompatibel zu halten. Die gesamte Parametrisierung von Generika wird gelöscht - keiner davon bringt es tatsächlich in den Byte-Code. Aus diesem Grunde Java Generics so begrenzt ist - Sie können nicht zum Beispiel

tun
T myT = new T(); 

wenn T ein parametrisierte Typ, weil zur Laufzeit alle Informationen über T bereits gelöscht worden.