Ben diğer programcılar (ve kendim!) Bir yöntemin ne iade edebileceği hakkında bir ipucu vermek için yöntemler üzerinde @Nonnull ve @Nullable ek açıklamaları kullanıyorum. Sonunda bir sınıfta Findbugs'ı çalıştırmaya karar verdim (IntelliJ - FindBugs-IDEA v1.0.1) ve gördüğüm davranışları anlamıyorum. Dokümanlar da işe yaramadı.Findbugs neden bir yöntem için gereksiz bir nullcheck verir, ancak diğer
ı Aşağıdaki örnek kod var diyelim:
import javax.annotation.Nonnull;
public class Main {
public static void main(String[] args) {
}
@Nonnull
public static String myFunc(){
return new String("foo");
}
@Nonnull
public static String myFunc2(){
return "foo";
}
}
Findbugs bayrakları myFunc() 'in return ifadesi 'boş olmayan olduğu bilinen değerin Gereksiz nullcheck' sahip olarak, fakat (myFunc2 ile mutlu).
Findbug'ların bunları farklı görmesi bekleniyor mu? (Dokümanlara link takdir edilecektir) @Nonnull'ın yöntemlerde kullanımını tamamen yanlış anlamış mıyım?
[değiştir]
bazı araştırma sonra (sözleşme ihlalleri hataları değişti birlikte) org.jetbrains @Contract açıklama daha iyi benim ihtiyaçlarına hizmet edecek karar verdik. Yardımınız için teşekkür ederim Guillaume F.!
Ne boş olabilir ama 'new String kullanmak temelde gerekli asla olabilir ("dize") '. –
Açıkçası. Sadece benim gerçek kodumdan çok daha basit bir örnek oluşturuyor. –
Ancak, ilgili ayrıntıları atladığınıza benziyor: String dizilerini kullanmanıza olanak veren 'String'lerdir; Yoksa başka bir şey mi? –