Нет, @ParametersAreNonnullByDefault
применяется только к параметрам метода - значениям, которые он принимает от вызывающей стороны (в скобках).Метод все еще может возвращать значение null
.
Вот класс, который объединяет все три места, где вы можете применить @Nonnull
, хотя в нашем коде я все еще использую три отдельных аннотации, одна из которыхпоставляется JSR-305.
package com.sample;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import javax.annotation.meta.TypeQualifierDefault;
/**
* This annotation can be applied to a package, class or method to indicate that all
* class fields and method parameters and return values in that element are nonnull
* by default unless overridden.
*/
@Documented
@Nonnull
@TypeQualifierDefault({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface EverythingIsNonnullByDefault {
}