فصل 3.2 و 3.3: ایجاد رابط کاربری خود با استفاده از حاشیه نویسی

در جاوا ، هر رابط با یک روش انتزاعی واحد در حال حاضر یک رابط کاربری در نظر گرفته شده است. این بدان معنی است که لازم نیست تغییراتی ایجاد شود تا بتواند با عبارات لامبدا مورد استفاده قرار گیرد.
🔹 ایجاد یک رابط کاربری
به عنوان مثال ، فرض کنید ما رابط اعتبار سنجی داریم که آیا داده معتبر است:
interface Validador {
boolean valida(T t);
}
قبل از جاوا 8 ، ما به یک کلاس ناشناس نیاز داریم تا این رابط را فوری کنیم:
Validador validadorCEP = new Validador() {
public boolean valida(String valor) {
return valor.matches("[0-9]{5}-[0-9]{3}");
}
};
🔹 عبارات لامبدا
از جاوا 8 ، می توانیم کلاس ناشناس را با یک عبارت Lambda جایگزین کنیم و کد را ساده تر کنیم:
Validador validadorCEP =
valor -> {
return valor.matches("[0-9]{5}-[0-9]{3}");
};
و ما می توانیم حتی بیشتر کاهش دهیم ، کلیدها {} و نقطه و کاما را از بین ببریم.
Validador validadorCEP =
valor -> valor.matches("[0-9]{5}-[0-9]{3}");
اکنون اعتبار سنجی کد پستی فقط یک خط را اشغال می کند! 🚀
🔹 حاشیه نویسی functionalinterface
برای جلوگیری از تغییر تصادفی کسی ، می توانیم از حاشیه نویسی FunctionalInterface استفاده کنیم:
@FunctionalInterface
interface Validador {
boolean valida(T t);
}
اگر سعی کنیم یک روش انتزاعی دوم اضافه کنیم ، کامپایلر خطایی ایجاد می کند:
@FunctionalInterface
interface Validador {
boolean valida(T t);
boolean outroMetodo(T t); // ❌ ERRO!
}
خطا ایجاد شده:
java: Unexpected @FunctionalInterface annotation
Validador is not a functional interface
multiple non-overriding abstract methods found in interface
حاشیه نویسی اجباری نیست ، اما تضمین می کند که رابط کاربری در آینده عملکردی باقی بماند.
📌 پایان
رابط با یک روش انتزاعی واحد به طور خودکار کاربردی است.
آنها می توانند به جای کلاسهای ناشناس ، با عبارات لامبدا فوری شوند.
حاشیه نویسی functionalinterface از رابط در برابر اصلاحات تصادفی محافظت می کند.
این ویژگی باعث می شود کد قابل خواندن ، کوتاه و کارآمدتر باشد! 🚀