برنامه نویسی

فصل 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 از رابط در برابر اصلاحات تصادفی محافظت می کند.
این ویژگی باعث می شود کد قابل خواندن ، کوتاه و کارآمدتر باشد! 🚀

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا