我的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