Bir Java yöntemi kullanımdan kaldırılmış olarak nasıl bildirilir veya işaretlenir?


284

Yöntemlerim "artık kullanılmıyor" = artık kullanılmaz yapmak istiyorum.

Ama yine de API'mda olmasını istiyorum. Sadece bu yöntemi kullanan herkese "uyarı" göstermek istiyorum.

Bunu nasıl başarabilirim?


10
@Deprecrated sizin için bir seçenek değil mi?
templatetypedef

18
Öyle, ama bilmiyordum ... bu yüzden soruyu soruyorum :)
Pavel Janicek


4
yorumlar cevapların yeri değil!
mattumotu

Yanıtlar:


578

@DeprecatedYöntemde kullanın . Javadoc alanını netleştirmeyi unutmayın:

/**
 * Does some thing in old style.
 *
 * @deprecated use {@link #new()} instead.  
 */
@Deprecated
public void old() {
// ...
}

2
Harici bir kütüphaneyi nasıl bağlarsınız? ör .: com.hello.api.PublicController # new
Kazi

@LinuxLars tamamen kabul etti! Java 9, kullanımdan kaldırmanın ciddiye alınmasına başlamak için birkaç özellik ekledi, ancak reasonvarsayılan değeri olan başka bir özellik eklemek ""zarar
veremezdi

3
Keşke ediyorum @deprecatedaçıklamada mesajı eklenebilir @Deprecated... (hepsini düzeltmek için tek bir noktada)
U. Windl

88

Hem @Deprecatedek açıklama hem de @deprecatedJavaDoc etiketini kullanın .

@deprecatedJavadoc etiketi dokümantasyon amaçlı kullanılır.

@DeprecatedAçıklama yöntemi kaldırılmış olduğu derleyici bildirir. Sun / Oracles belgesinde konuyla ilgili olarak şunları yazıyor:

@DeprecatedBir sınıfı, yöntemi veya alanı kullanımdan kaldırmak için ek açıklamayı kullanmak, kod bu program öğesini kullandığında tüm derleyicilerin uyarı vermesini sağlar. Buna karşılık, @deprecatedSun derleyicilerinin şu anda yapmasına rağmen, tüm derleyicilerin her zaman Javadoc etiketine dayalı uyarılar vereceğine dair bir garanti yoktur . Diğer derleyiciler bu tür uyarıları veremez. Bu nedenle, @Deprecateduyarı oluşturmak için ek açıklamayı kullanmak @deprecatedJavadoc etiketine dayanmaktan daha portatiftir .

Belgenin tamamını API'leri Nasıl ve Ne Zaman Kullanımdan Kaldırmak için bulabilirsiniz


1
Pek doğru değil. Hem Javadoc ve açıklama söyle derleyici yöntem eskimiştir
Bohemian

17
@Bohemian Aslında bu tam olarak doğru değil. Ek açıklama Java Dil Şartname bölüm 9.6.1.6 (tanımlanır java.sun.com/docs/books/jls/third_edition/html/... javadoc etiketi değil iken,). Dolayısıyla ek açıklama dilin bir parçasıdır. Kendi Java derleyicinizi yazmaya karar verirseniz, javadoc etiketini yok sayabilirsiniz, ancak ek açıklamayı tanımanız gerekir.
ShaMan-H_Fel

@ ShaMan-H_Fel Javadoc modelinin de işe yaradığına inanıyorum. Çünkü Java 5'ten önceki tek seçenekti ve işe yaradı. @deprecatedJavadoc etiketiyle (Java 4-'de) bir yöntemi işaretlediğinizde , derleyici yöntemi (sınıf, alan) kullanımdan kaldırılmış olarak işaretledi ve IDE'ler, kullanılabilir kaynak olmasa bile uyarılar gösterdi.
Amir Pashazadeh

42

bazı küçük açıklamalar eksik olduğu için

Buna @Deprecatedbenzer yöntemde ek açıklama kullanın

 /**
 * @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) {
}

açıklamayı unutma:

  1. Bu yöntem neden artık önerilmiyor ? Kullanırken hangi sorunlar ortaya çıkar. Varsa konuyla ilgili tartışmaya bir bağlantı sağlayın. (okunabilirlik için satırları ayırmayı unutmayın<br/>
  2. Ne zaman kaldırılacak . (eski yöntemlere bağlı kalmaya karar verirlerse kullanıcılarınıza bu yönteme ne kadar güvenebileceklerini bildirin)
  3. Tavsiye ettiğiniz yönteme bir çözüm veya bağlantı sağlayın{@link #setPurchasePrice()}

</br> yerine <br/> olmamalı mı?
argh1969

@ argh1969, doğru! o zaman şablonu nereden aldığımı hatırlamıyorum. Ancak her iki sürümün de çalıştığını doğrulayabilirim. Yine de standartlar lehine düzenleme yapıyorum.
azerafati

37

Yapabileceğiniz iki şey var:

  1. @DeprecatedEk açıklamayı yönteme ekleyin ve
  2. Bir ekleme @deprecatedyönteminin javadoc etiket

Her ikisini de yapmalısın !

Bu konuda java belgelerinden alıntı :

J2SE 5.0 ile başlayarak, @Deprecated ek açıklamasını kullanarak bir sınıfı, yöntemi veya alanı kullanımdan kaldırmış olursunuz. Ayrıca, @deprecated Javadoc etiketini kullanarak geliştiricilere bunun yerine ne kullanacaklarını söyleyebilirsiniz.

Ek açıklamayı kullanmak, derlenmemiş sınıf, yöntem veya alan kullanıldığında Java derleyicisinin uyarı oluşturmasına neden olur. Derleyici, kullanımdan kaldırılmış bir derleme birimi kullanımdan kaldırılmış bir sınıf, yöntem veya alan kullanıyorsa kullanımdan kaldırma uyarılarını bastırır. Bu, uyarı oluşturmadan eski API'ler oluşturmanıza olanak tanır.

Yeni API'nın nasıl kullanılacağını açıklayan uygun yorumlarla Javadoc @ deprecated etiketini kullanmanız önemle tavsiye edilir. Bu, geliştiricilerin eski API'dan yeni API'ya uygulanabilir bir geçiş yoluna sahip olmasını sağlar



3

@DeprecatedEk açıklamaya bir göz atın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.