اینا دوتا اصلاحگر هستن که صرفا برای افزایش خوانایی کد کاربرد دارن. البته فقط یه پیادهسازی از این دوتا اصلاحگر وجود نداره و تو خیلی از پکیجها میتونی پیداشون کنی: لینک
البته بعضا IDEها هم امکاناتی رو در این موارد اضافه کردن که میتونی مستندات IDEت رو بخونی.
یه مثال از کاربرد این اصلاحگرها:
import java.util.Objects;
final class SimpleLogger {
private SimpleLogger() {}
public static void logNotNull(@NotNull Object obj) {
System.out.println(Objects.requireNonNull(obj, "Field `obj` must not be null."));
}
public static void logNullable(@Nullable Object obj) {
System.out.println(obj);
}
}
استفاده:
public static void main(String[] args) {
SimpleLogger.logNullable("I'm annotated by @Nullable");
SimpleLogger.logNullable(null);
SimpleLogger.logNotNull("I'm annotated by @NotNull");
SimpleLogger.logNotNull(null);
}
اینم ببین.
ویرایش:
پیشنهاد میکنم به جای اصلاحگر NotNull از متد requireNonNull در کلاس java.util.Objects استفاده کنی:
Object notnull = Objects.requireNonNull(obj, "Obj is NULL :|");
و به جای اصلاحگر Nullable هم از کلاس java.util.Optional استفاده کنی که البته توی جاوا۸ اضافه شده. لینک