2016-12-05 4 views
3

Ich habe 2 Klassen. Der erste enthält eine veraltete Methode. Die zweite Klasse instanziiert die erste und verwendet ihre veraltete Methode.veraltete Methode nicht erwähnt in Javadoc

Der Compiler hat eine Warnung aber:

Frage: warum die veraltete Methode in der generierten Java-Dokumentation aufgeführt wird nicht nach javadoc Test.java läuft? Hier

ist der Code:

import java.lang.annotation.*; 
class Tester{ 
    private int a = 1; 
    /** 
    * @deprecated 
    * This is deprecated because I do not like it 
    */ 
    @Deprecated 
    public void afficher(){ 
     System.out.println("a is: " + a); 
    } 
} 
public class Test{ 
    public static void main(String[] args){ 
     Tester T = new Tester(); 
     T.afficher(); 
    } 
} 

Hier ist ein Screenshot der erzeugten Java-Dokumentation Datei, in der die veraltete Methode nicht aufgeführt ist:

enter image description here

+5

Ihre Klasse ist nicht öffentlich - 'Tester' nicht * * im Moment überhaupt dokumentiert werden. Das hat nichts mit Abwertung zu tun. –

+0

@JonSkeet Ich habe die Dokumentation des obigen Programms mit dem Befehl erstellt, den ich erwähnt habe, aber ich sehe die veraltete Methode einfach nicht –

+3

Verschieben Sie 'Test' in seine eigene Datei und legen Sie sie als öffentliche Klasse fest. dann mach das Javadoc wieder. – AxelH

Antwort

1

Javadoc nur Dokumente öffentliche Klassen . Ihre Klasse, in der eine veraltete Methode vorhanden ist, ist nicht öffentlich und wird daher nicht dokumentiert.

javadoc Test.java 

generiert Dokumentation für Klasse Test. Ihre veraltete Methode befindet sich in der Klasse Tester.

+0

danke aber zuvor wurde ich gebeten, das veraltete Element nicht innerhalb der Klasse selbst zu verwenden: http://stackoverflow.com/questions/40968273/field-declared-deprecated-but-no-compiler-warning –

+0

Nein, wurde Ihnen gesagt dass du nicht gewarnt wirst. – xenteros

+0

Ich habe deine Antwort noch einmal sorgfältig gelesen und den Kommentar von @AxelH oben benutzt, so dass es jetzt funktioniert. Vielen Dank –

3

Wie in den Kommentaren darauf hingewiesen wurde: Die Klasse Tester wird nicht dokumentiert, da sie für javadoc nicht als relevant angesehen wird. Standardmäßig werden nur public oder protected zur Dokumentation gesammelt (http://docs.oracle.com/javase/8/docs/technotes/tools/windows/javadoc.html).

Entweder ihre Sichtbarkeit ändern (zum Beispiel macht es protected oder public) oder Javadoc- mit der Flagge -package oder -private erzeugen. Aber hüte dich davor, dass du dann viele Dokumente erstellen kannst, die du wahrscheinlich gar nicht brauchst.

javadoc -package Test.java 
1
-public: Shows only public classes and members. 
-protected: Shows only protected and public classes and members. This is the default. 
-package: Shows only package, protected, and public classes and members. 
-private: Shows all classes and members. 

nennen es also mit javadoc -package -d * .java

+0

danke für den letzten Befehl –

Verwandte Themen