2013-09-16 19 views
11

Ich möchte die Zeichenfolge aus A_CONSTANT Teil der Kommentare von ClassB sein:Warum kann Eclipse nicht mit @value umgehen, wenn es in einer anderen Klasse verwendet wird?

package my.stuff; 

public class ClassA { 
    /** Shows the string just fine: {@value} */ 
    public static final String A_CONSTANT = "show this in comments"; 
} 

package my.stuff; 

/** 
* Does not give me the string: {@value my.stuff.ClassA#A_CONSTANT} 
* Neither does this: {@value ClassA#A_CONSTANT} 
* 
* @see my.stuff.ClassA#A_CONSTANT 
*/ 
public class ClassB { 

} 

Die {@value} in ClassA zeigt mir den String Inhalt, wenn sie über den Namen des konstanten schweben; das ist gut.

Auch der @see-Tag funktioniert in ClassB durch Verknüpfung mit A_CONSTANT.

Doch die beiden {@value ...} Versuche in ClassB scheitern: Ich habe den wörtlichen {@value ...} Teil sehen und nicht der Inhalt von A_CONSTANT wenn über ClassB schwebt.

Die documentation sagt mir, dass ich die folgende Notation verwenden soll, die ich glaube, dass ich getan habe: {@value package.class#field}.

Die Antwort auf this question empfiehlt auch, die obige Notation zu verwenden.

This ist im Grunde die gleiche Frage wie meine, wurde aber nicht beantwortet.

Wie kann ich den String-Inhalt der Konstante in den Kommentaren der anderen Klasse zeigen?

Ich benutze Eclipse Juno auf Windows 7 x86.

Vielen Dank im Voraus.

Edit:

Wenn javadoc.exe läuft auf meinem Projekt {@value my.stuff.ClassA#A_CONSTANT} auf die richtige Zeichenfolge aufgelöst wird.

Aus diesem Grund habe ich die Frage ein wenig verändert haben:

Warum Eclipse-nicht angezeigt werden Zeichenfolge die Konstante des Mouseover während javadoc.exe kein Problem damit hat?

Mouse over in Eclipse: Constant's string is not shown

+0

Ich bin ein Neuling, also vielleicht ein dummer Kommentar. Ran 'javadoc' und es gibt Shows korrekt für ClassB' Gibt mir nicht die Zeichenfolge: "Zeigen Sie dies in den Kommentaren" Weder tut dies: '. Also das Problem ist mit deiner Eclipse und meinem JEdit. Vielleicht gibt es irgendwo zu spezifizieren, wo das erzeugte Javadoc und z.B. constant-values.html befinden sich. – clwhisk

+0

(Gerade mit Eclipse Luna (4.4) versucht. Das gleiche Ergebnis. Ich denke, das ist ein Fehler. Oder eine Regression: https://bugs.eclipse.org/bugs/show_bug.cgi?id=172459) –

Antwort

-1

Auf der javadoc Referenzseite, die Sie here verbunden sind, unter „Wo Tags verwendet werden kann“ es zitiert, dass @value auf einem Feld verwendet werden kann, aber nicht auf eine Klasse. In Klasse B befindet sich das Javadoc in der Klasse, die ungültig ist. Es ist möglich, dass Eclipse diese Auswertung strikt befolgt, während die javadoc.exe mit Platzierung milder ist.

+1

Ich denke, Sie Ich habe weder die Frage noch das Beispiel verstanden, '{@value my.stuff.ClassA # A_CONSTANT}' zielt auf das Feld 'A_CONSTANT' innerhalb der Klasse' ClassA', also sollte es funktionieren, aber Eclipse scheint das nicht zu akzeptieren Syntax ... –

3

Dies scheint ein Fehler in Eclipse zu sein. Ändern Sie das Beispiel leicht von the docs:

public class TestClass { 
    /** 
    * The value of this constant is {@value}. 
    */ 
    // In Eclipse this shows: The value of this constant is "<script>". 
    public static final String SCRIPT_START = "<script>"; 
    /** 
    * Evaluates the script starting with {@value TestClass#SCRIPT_START}. 
    */ 
    // In Eclipse this shows: Evaluates the script starting with {@value TestClass#SCRIPT_START}. 
    public void test1() { 
    /** 
    * Evaluates the script starting with {@value #SCRIPT_START}. 
    */ 
    // In Eclipse this shows: Evaluates the script starting with "<script>". 
    public void test2() { 
    } 
} 

A bug hat mit Eclipse für diese erstellt.

+0

Danke für die Einreichung der Fehlerbericht. –

Verwandte Themen