Sobes.tech
Middle

Какво знаете за функционалните интерфейси в Java 8 и по-нови версии?

sobes.tech AI

Отговор от AI

Функционалният интерфейс е интерфейс, който съдържа само един абстрактен метод. Те се използват за реализиране на ламбда изрази и препратки към методи. Могат да имат дефолтни и статични методи.

Примери за вградени функционални интерфейси в пакета java.util.function:

  • Predicate<T>: Приема аргумент от тип T и връща булева стойност.
    // public boolean test(T t);
    
  • Consumer<T>: Приема аргумент от тип T и не връща нищо. Извършва действие върху аргумента.
    // public void accept(T t);
    
  • Supplier<T>: Не приема аргументи и връща стойност от тип T.
    // public T get();
    
  • Function<T, R>: Приема аргумент от тип T и връща стойност от тип R.
    // public R apply(T t);
    

Анотацията @FunctionalInterface е опционална, но се препоръчва за проверка от компилатора и за яснота.

@FunctionalInterface
interface MyFunction {
    String process(String input);
    
    default void doNothing() {
        // Метод по подразбиране
    }
}