My collect()
вызов функции Foo.f()
. Я хотел бы сделать Foo.f()
сам параметр моей функции. Возможно ли это на Java?Как передать функцию-член в качестве параметра в java?
- Как я могу передать либо
Foo.f()
илиFoo.g()
(или любой другой функциейFoo
, которая возвращаетString
) к моей функции? - Есть ли уже существующая функция, которая просматривает коллекцию и собирает результат вызова метода для каждого элемента коллекции?
.
class Foo {
public String f() { return "f"; }
public String g() { return "g"; }
// ...
}
public List<String> collect(List<Foo> foos)
{
List<String> result = new ArrayList<String>();
for (final Foo foo: foos) {
result.add(foo.f()); // I want Foo.f to be a parameter
}
return result;
}
Update
Я хотел бы отметить тот факт, что я не просто вызывая ту же функцию, но вместо функции f
члена для всех пунктов List<Foo>
коллекции.
Вы всегда можете использовать API отражения и передать объект Method. – duffymo
Или вы можете создать интерфейс ... – pamphlet
Проверьте [Command Pattern] (http://en.wikipedia.org/wiki/Command_pattern). Указатели функций не существуют в java, кроме как с отражением –