Sobes.tech
Назад к вопросам
Junior — Middle
65

Можно ли создавать методы для приема и возвращения значений в функциональных интерфейсах?

Ответ от нейросети

sobes.tech AI

В функциональном интерфейсе в Java обязательно должен быть ровно один абстрактный метод (SAM — Single Abstract Method). Этот метод и определяет сигнатуру для приема и возврата значений.

Можно создавать дополнительные методы, но:

  • Они должны быть либо default (с реализацией),
  • Либо static,
  • Либо методы из java.lang.Object (например, equals, hashCode, toString).

Абстрактных методов, кроме одного, быть не должно.

Пример:

@FunctionalInterface
public interface MyFunction {
    int apply(int x); // основной абстрактный метод

    default int doubleApply(int x) { // дополнительный метод с реализацией
        return apply(x) * 2;
    }

    static int staticMethod() { // статический метод
        return 42;
    }
}

Таким образом, метод для приема и возврата значений — это и есть единственный абстрактный метод интерфейса. Другие методы с реализацией создавать можно, но они не влияют на функциональность интерфейса.