Back to questions
Junior — Middle
66
Можно ли создавать методы для приема и возвращения значений в функциональных интерфейсах?
Answer from AI
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;
}
}
Таким образом, метод для приема и возврата значений — это и есть единственный абстрактный метод интерфейса. Другие методы с реализацией создавать можно, но они не влияют на функциональность интерфейса.