Eski kodlarda şu satırı dahil ederiz.
import javax.annotation.Nonnull;
Yeni kodlarda şu satırı dahil ederiz.
import jakarta.annotation.Nonnull;
İmzası şöyle
@Documented
@TypeQualifier
@Retention(RetentionPolicy.RUNTIME)
public @interface Nonnull {
...
}
Açıklaması şöyle.
@Nonnull annotation documents the fact that obj must be non-null, while Objects.requireNonNull call ensures that obj is non-null at run-time.
IDE İçinde Uyarıları Gösterme
Bu anotasyon tamamen IDE içinde uyarılar göstermek için. Koşma esnasında exception fırlatmıyor. Açıklaması şöyle
Annotations are just extra information attached to the items they annotate; they don't inherently have built-in logic. If you're using tooling like Lombok or the Kotlin language, the compiler may support automatically adding logic based on the annotations, but otherwise, they don't "do anything" until you actually make an active check (for example, by running your POJO through a validator).
JetBrains Yerine Javax Anotasyonlarını Kullanmak
IntelliJ'in bu anotasyonları tanıması için şöyle yaparız
1. Settings > Inspections > Java > Probable bugs > Nullability problems > @NotNull/@Nullable problems > Configure Annotationspenceresine gidilir2. Burada Annotation used for code generation olarak javax.annotation.Nullable ve javax.annotation.Nonnull atanır
Koşma Esnasında Exception Fırlatma
1. Settings > Build, Execution, Deployment > Compiler penceresine gidilir2. Add runtime assertions for notnull-annotated methods and parameters seçilir.3. Configure annotations düğmesine tıklanır ve yukarıda tanımladığımız anotasyonların aynısı seçilir. Yani javax.annotation.Nullable ve javax.annotation.Nonnull atanır
Maven
Şu satırı dahil ederiz
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.2</version>
</dependency>
Şöyle yaparız
@Nonnull
public Foo fromString(@Nullable String str) {
...
}
ÖrnekŞöyle yaparız. Burada halen Objects.requireNonNull() kullanılıyor
public Integer getId(@Nonnull SomeObject obj){
Objects.requireNonNull(SomeObject, "SomeObject is null");
// do some stuff
return id;
}
Hiç yorum yok:
Yorum Gönder