Chciałbym, aby jedna z moich metod była „przestarzała” = już nie używana.
Ale nadal chciałbym mieć to w moim API. Chcę tylko pokazać „ostrzeżenie” każdemu, kto używa tej metody.
Jak mogę to osiągnąć?
Chciałbym, aby jedna z moich metod była „przestarzała” = już nie używana.
Ale nadal chciałbym mieć to w moim API. Chcę tylko pokazać „ostrzeżenie” każdemu, kto używa tej metody.
Jak mogę to osiągnąć?
Odpowiedzi:
Użyj @Deprecated
według metody. Nie zapomnij o wyjaśnieniu pola javadoc:
/**
* Does some thing in old style.
*
* @deprecated use {@link #new()} instead.
*/
@Deprecated
public void old() {
// ...
}
reason
o wartości domyślnej ""
nie mogło zaszkodzić
@deprecated
wiadomość w komentarzu mogła zostać dodana do @Deprecated
(jedno miejsce, aby naprawić je wszystkie) ...
Użyj zarówno @Deprecated
adnotacji, jak i @deprecated
znacznika JavaDoc.
Znacznik @deprecated
JavaDoc służy do celów dokumentacji.
@Deprecated
Adnotacja instruuje kompilator, że metoda jest przestarzała. Oto, co napisano w dokumencie Sun / Oracles na ten temat:
Wykorzystanie
@Deprecated
adnotacji do wycofania klasy, metody lub pola gwarantuje, że wszystkie kompilatory będą wydawały ostrzeżenia, gdy kod użyje tego elementu programu. W przeciwieństwie do tego, nie ma gwarancji, że wszystkie kompilatory zawsze będą generowały ostrzeżenia na podstawie@deprecated
znacznika Javadoc, chociaż obecnie kompilatory Sun to robią. Inne kompilatory mogą nie wydawać takich ostrzeżeń. Tak więc używanie@Deprecated
adnotacji do generowania ostrzeżeń jest bardziej przenośne niż poleganie na@deprecated
znaczniku Javadoc.
Pełen dokument można znaleźć w temacie Jak i kiedy wycofywać interfejsy API
@deprecated
tagiem javadoc (w Javie 4-), kompilator oznaczył metodę (klasę, pole) jako przestarzałą, a IDE pokazały ostrzeżenia, nawet jeśli żadne źródło nie było dostępne.
ponieważ brakowało kilku drobnych wyjaśnień
Użyj @Deprecated
adnotacji na takiej metodzie
/**
* @param basePrice
*
* @deprecated reason this method is deprecated <br/>
* {will be removed in next version} <br/>
* use {@link #setPurchasePrice()} instead like this:
*
*
* <blockquote><pre>
* getProduct().setPurchasePrice(200)
* </pre></blockquote>
*
*/
@Deprecated
public void setBaseprice(int basePrice) {
}
<br/>
{@link #setPurchasePrice()}
Możesz zrobić dwie rzeczy:
@Deprecated
adnotację do metody i@deprecated
znacznik do javadoc metodyPowinieneś zrobić oba !
Cytując dokumentację Java na ten temat:
Począwszy od J2SE 5.0, klasa, metoda lub pole są przestarzałe przy użyciu adnotacji @Deprecated. Ponadto można użyć tagu Javadoc @deprecated informującego programistów, czego należy użyć.
Użycie adnotacji powoduje, że kompilator Java generuje ostrzeżenia, gdy używana jest przestarzała klasa, metoda lub pole. Kompilator eliminuje ostrzeżenia o wycofaniu, jeśli przestarzała jednostka kompilacyjna używa przestarzałej klasy, metody lub pola. Umożliwia to tworzenie starszych interfejsów API bez generowania ostrzeżeń.
Zdecydowanie zalecamy użycie tagu Javadoc @deprecated z odpowiednimi komentarzami wyjaśniającymi, jak korzystać z nowego interfejsu API. Dzięki temu programiści będą mieli wykonalną ścieżkę migracji ze starego interfejsu API do nowego interfejsu API