Credo sia una lacuna nel linguaggio Java stesso e non ha senso specificare un metodo in un'interfaccia come deprecato tramite un'annotazione e non avere il metodo considerato deprecato nella classe di implementazione.
Sarebbe meglio se venissero ereditate le @ deprecated-ness del metodo. Sfortunatamente, sembra che Java non supporti questo.
Considerare come la gestione degli strumenti, ad esempio un IDE, tratti questa situazione: se il tipo di una variabile viene dichiarato come interfaccia, i metodi @deprecated possono essere visualizzati con un attacco. Ma se il tipo di una variabile è dichiarata come la classe di implementazione e la firma della classe non include @deprecated, il metodo sarà reso senza un avvertimento.
La domanda fondamentale è: cosa significa che un metodo deve essere deprecato in un'interfaccia ma non in una classe di implementazione (o in un'interfaccia estesa)? L'unica ragione ragionevole è che il metodo sia deprecato per tutto ciò che si trova sotto l'interfaccia nella gerarchia delle classi. Ma la lingua non supporta questo comportamento.
fonte
2009-08-12 22:25:23
Perché dovresti anche svalutare il metodo -only- in un'interfaccia? Basta inserire nei documenti di rilascio che "Interfaccia" Joe "non è stata utilizzata per l'uso". o qualcosa. – Zack
Esistono altri metodi per l'interfaccia e la classe. Scusa Zack per la confusione. –