Ale*_*lue 4 java generics methods
我想要做的是轻松地将实际的方法对象传递给另一个方法.这样我就可以创建一个通用的Joiner函数,该函数连接对象列表的给定方法,而不会只传入表示该方法的字符串.这在Java中是否可行,以便我可以使用以下语法:
joinOnMethod(String, Collections<T>, Method) e.g.
joinOnMethod(", ", someList, T.getName())
Run Code Online (Sandbox Code Playgroud)
其中T.getName()将getName()方法传递给列表中的每个对象,而不是传入方法本身的返回类型.
希望这足以满足我的需求,
阿列克谢蓝.
直接在Java中没有一流的功能支持.两种选择:
创建一个包含单个成员的类型,如下所示:
public interface Function<In, Out> {
Out apply(In input);
}
Run Code Online (Sandbox Code Playgroud)
然后你可以使用匿名内部类,如下所示:
joinOnMethod(", ", someList, new Function<T, String>() {
@Override public String apply(T input) {
return input.getName();
}
});
Run Code Online (Sandbox Code Playgroud)
当然,您可以将该函数提取为变量:
private static Function<T, String> NAME_EXTRACTOR =
new Function<T, String>() {
@Override public String apply(T input) {
return input.getName();
}
};
...
joinOnMethod(", ", someList, NAME_EXTRACTOR);
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
538 次 |
| 最近记录: |