2013-09-16 4 views
11

voglio la stringa da A_CONSTANT a far parte dei commenti di ClassB:Perché Eclipse non può gestire @value se utilizzato in un'altra classe?

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 { 

} 

Il {@value} in ClassA mi mostra il contenuto della stringa quando si libra sopra il nome della costante; va bene.

Anche il tag @see fa il suo lavoro in ClassB tramite collegamento a A_CONSTANT.

Eppure i due {@value ...} tentativi falliscono ClassB: vedo il {@value ...} parte letterale e non il contenuto del A_CONSTANT quando si passa sopra ClassB.

Il documentation mi dice di usare la seguente notazione che penso di aver fatto: {@value package.class#field}.

La risposta a this question consiglia inoltre di utilizzare la notazione di cui sopra.

This è fondamentalmente la stessa domanda della mia ma non ha ricevuto risposta.

Come posso visualizzare il contenuto della stringa della costante nei commenti dell'altra classe?

Sto usando Eclipse Juno su Windows 7 x86.

Grazie in anticipo.

Edit:

Quando si esegue javadoc.exe sul mio progetto {@value my.stuff.ClassA#A_CONSTANT} risolve la stringa corretta.

Questa è per questo che ho cambiato la domanda un po ':

Perché non Eclipse visualizzare stringa della costante al passaggio del mouse, mentre javadoc.exe non ha alcun problema con esso?

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

+0

Sono un novizio per questo, quindi forse un commento stupido. Ran 'javadoc' e ci sono show correttamente per ClassB' Non mi da la stringa: "mostra questo nei commenti" Né fa questo: '. Quindi il problema è con il tuo Eclipse e il mio JEdit. Forse c'è un posto dove specificare dove il javadoc generato e ad es. constant-values.html si trovano. – clwhisk

+0

(Ho appena provato con eclipse luna (4.4), lo stesso risultato, suppongo che questo sia un bug o una regressione: https://bugs.eclipse.org/bugs/show_bug.cgi?id=172459) –

risposta

-1

Nella pagina di riferimento javadoc che si è collegato al here, alla voce "Dove tag possono essere usati" si cita che @value può essere utilizzato su un campo, ma non su una classe. In Classe B, javadoc è nella classe, che non è valido. È possibile che eclipse stia seguendo rigorosamente quella valutazione mentre javadoc.exe è più indulgente con il posizionamento.

+1

Penso che tu non ho capito la domanda né l'esempio, '{@value my.stuff.ClassA # A_CONSTANT}' bersaglia il campo 'A_CONSTANT' all'interno della classe' ClassA', quindi dovrebbe funzionare, ma Eclipse non sembra accettarlo sintassi ... –

3

Questo sembra essere un bug in Eclipse. Modificare l'esempio leggermente da 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() { 
    } 
} 

Un bug è stato creato con Eclipse per questo.

+0

Grazie per aver archiviato il bug report. –

Problemi correlati