2016-07-13 57 views
6

Come si crea un riferimento, in javadoc, a un parametro metodo, in modo che il riferimento possa essere refactored?
Per esempio:Riferimento rifattorizzabile a un parametro metodo in javadoc

public class A { 

    private int field; 

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

    } 
}  

Se rinomino parametro p nel codice di cui sopra, voglio

"... utilizzando il valore di p"

testo per modificare di conseguenza (appena il campo di ridenominazione cambierà {@link #field}).
Ho letto il vecchio post this e alcune altre fonti, ma non sono riuscito a trovare un modo per farlo.
javadoc lo supporta?

+0

Le domande e le domande a cui si è collegati indicano chiaramente che non esiste tale funzionalità in JavaDoc.Perché questa domanda non dovrebbe essere chiusa come un duplicato? –

risposta

1

A causa dell'eliminazione di Java, i nomi degli argomenti del metodo sono temporanei, non fanno parte della definizione di classe statica. Quindi, void foo(int p) modificato in void foo(int x) non viene considerato come refactoring, poiché è garantito che non influirà in alcun modo sulla logica del programma (a meno che l'argomento non stia sovraccaricando un campo di classe).

Quindi nella javadoc non può esistere un collegamento statico che identifichi l'argomento del metodo. Il semplice fatto che la parola dopo lo @param cambi quando si rifatta il metodo è un favore offerto dall'IDE.

1

Hai provato a configurare le preferenze di javadoc di eclipse? Finestra-> Preferenze, Java-> Compilatore-> Javadoc. Controllare l'opzione Elaborare commenti Javadoc.

Anche se controlli Finestra-> Preferenze> Java-> Editor->> Typing- Javadoc e commento regioni + Aggiungi tag Javadoc aggiungerà i tag Javadoc gli appropriati. Dopo aver attivato entrambi, Eclipse ti avviserà dei parametri errati e puoi utilizzare ctrl per "risolverli rapidamente".

+2

Grazie per le risposte. Queste opzioni sono utili. Non aiutano con la questione che ho sollevato. – c0der

2

L'IDE sarà in grado di rifattorizzare il nome se lo si inserisce dopo @param (testato in Eclipse), ma non se lo si fa riferimento altrove nel commento. Dal punto di vista della lingua, non c'è motivo di farlo. Perché non scrivere semplicemente @param p {@link #field} is initialized using this value.?

+0

Grazie per la risposta. Sì, so che funzionerà per '@param p e un po 'di testo'. Non funziona per 'some text @param p' – c0der

1

IntelliJ IDEA riforterà il nome del parametro in qualsiasi punto del commento JavaDoc purché lo si inserisca tra parentesi graffe, ad es. {} P @ param

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

Inoltre, Java tipo cancellazione (come indicato nella risposta accettata) non ha nulla a che fare con l'ambito di nomi di variabili. La cancellazione dei caratteri è il compromesso che i progettisti Java hanno implementato per aggiungere Java Generics ma mantenere il linguaggio compatibile con le versioni precedenti. Tutta la parametrizzazione dei generici viene cancellata - nessuna di queste viene effettivamente eseguita nel codice byte. Questo è il motivo per cui Java Generics sono così limitati - non si può per esempio fare

T myT = new T(); 

se T è un tipo parametrizzata, perché in fase di esecuzione di tutte le informazioni su T è già stato cancellato.

Problemi correlati