Sobes.tech
Junior — Middle

Je možné definovať rozhranie bez anotácie @FunctionalInterface ako funkčné rozhranie?

sobes.tech AI

Odpoveď od AI

Anotácia @FunctionalInterface v Jave nie je povinná na to, aby rozhranie bolo považované za funkčné. Hlavnou podmienkou je, že rozhranie musí obsahovať presne jednu abstraktnú metódu.

Anotácia slúži na jasné označenie a kontrolu tohto faktu kompilátorom, ale aj bez nej je možné použiť rozhranie s jednou abstraktnou metódou v lambda výrazoch a metódach, ktoré očakávajú funkčné rozhranie.

Príklad:

interface MyFunction {
    void apply(); // jediná abstraktná metóda
}

MyFunction f = () -> System.out.println("Hello");
f.apply();

Tu je MyFunction funkčné rozhranie bez anotácie.