Java-эквивалент .NET Action <T> и Func <T, U> и т.д.
Существуют ли в Java стандартные типы "обратного вызова" или "функции/метода", например System.Action<T>
или System.Func<T,U>
в .NET?
В моем конкретном случае мне нужен класс, который обертывает метод, который принимает один (общий) параметр типа T
и ничего не возвращает (т.е. void
).
Да, достаточно легко создать такой класс/интерфейс для себя, но я бы предпочел стандартный класс библиотеки, если он есть.
Ответы
Ответ 1
Я не верю ни в что в стандартной библиотеке, нет (на момент написания, 2010). В других библиотеках есть такие вещи, как Guice Provider<T>
и Guava Function<F, T>
, Supplier<T>
и Predicate<T>
... поэтому, если вы уже используете библиотеки, вы можете посмотреть, что они предоставляют в этом направлении.
(EDIT: Как уже отмечалось, это интерфейсы, которые возвращают вещи, похожие на Func<T, U>
, но не похожие на Action<T>
.)
Ответ 2
Стандартная библиотека Java не предоставляет таких классов.
Вы можете использовать функциональную Java библиотеку, которая предоставляет fj.F1<T, fj.Unit>
, которая в основном эквивалентна System.Action<T>
из .NET.