我想做的是轻松地将一个实际的方法对象传递给另一个方法。这样我就可以创建一个通用的 Joiner 函数,该函数连接对象列表的给定方法,而不必担心只传入表示该方法的字符串的危险。这在 Java 中是否可行,以便我可以使用如下语法:
joinOnMethod(String, Collections<T>, Method) e.g.
joinOnMethod(", ", someList, T.getName())
其中 T.getName() 将 getName() 方法传递给列表中的每个对象,而不是传递方法本身的返回类型。
希望这足以满足我的需求,
阿列克谢蓝。
最佳答案
Java 中没有直接的一流函数支持。两种选择:
- 传入方法名,使用反射获取
创建一个只有一个成员的类型,如下所示:
public interface Function<In, Out> { Out apply(In input); }
然后你可以使用匿名内部类,像这样:
joinOnMethod(", ", someList, new Function<T, String>() { @Override public String apply(T input) { return input.getName(); } });
当然,您可以将该函数提取为变量:
private static Function<T, String> NAME_EXTRACTOR = new Function<T, String>() { @Override public String apply(T input) { return input.getName(); } }; ... joinOnMethod(", ", someList, NAME_EXTRACTOR);
关于java - 如何将实际方法作为参数传递给 Java 中的另一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10653658/