Sto cercando di utilizzare lo @Deprecated annotation. La documentazione @Deprecated dice che: "I compilatori avvisano quando un elemento del programma deprecato viene utilizzato o sovrascritto nel codice non deprecato". Penserei che questo dovrebbe scatenarlo, ma non è così. javac versione 1.7.0_09 e compilato usando e non usando -Xlint e -deprecation.Perché l'annotazione @Deprecated non sta attivando un avviso del compilatore su un metodo?
public class TestAnnotations {
public static void main(String[] args)
{
TestAnnotations theApp = new TestAnnotations();
theApp.thisIsDeprecated();
}
@Deprecated
public void thisIsDeprecated()
{
System.out.println("doing it the old way");
}
}
Edit: per il commento del GD1 sotto per quanto riguarda solo funzionare se il metodo è in un'altra classe, ho aggiunto una seconda classe. E lo fa WARN sulla chiamata a theOldWay():
public class TestAnnotations {
public static void main(String[] args)
{
TestAnnotations theApp = new TestAnnotations();
theApp.thisIsDeprecated();
OtherClass thatClass = new OtherClass();
thatClass.theOldWay();
}
@Deprecated
public void thisIsDeprecated()
{
System.out.println("doing it the old way");
}
}
class OtherClass {
@Deprecated
void theOldWay()
{
System.out.println("gone out of style");
}
}
L'avvertimento:
/home/java/TestAnnotations.java:10: warning: [deprecazione] theOldWay() in OtherClass è stato deprecato
thatClass.theOldWay(); ^
1 avvertimento
ATTENZIONE: Sto solo supponendo. Forse nessun avviso deprecato viene generato a meno che non si chiami il metodo deprecato da un'altra classe. Ipotesi casuale. – gd1
@ gd1 no. La deprecazione non attiva l'avviso.Devi gestire la logica di deprecazione nel tuo framework/applicazione –