我的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;
}
更新
我想指出的事实,我不只是调用同一个功能,而是为List<Foo>
集合中的所有项目成员函数f
。
您始终可以使用反射API并传递一个Method对象。 – duffymo 2013-03-05 16:19:31
或者你可以创建一个接口... – pamphlet 2013-03-05 16:20:20
查看[Command Pattern](http://en.wikipedia.org/wiki/Command_pattern)。函数指针在java中不存在,除了用反射 – 2013-03-05 16:20:26