Mer*_*can 0 java generics function
我想做如下的事情。
private <T> void sliceGenericData (List<T> peData, **FunctionType** getterFunctionX) {
// ... Some Code ...
<T>.getterFunction()
// ... Some Code ...
}
Run Code Online (Sandbox Code Playgroud)
A 类和 B 类将是我的通用类型,如 <T>。A 类和 B 类的 getter 函数示例。
public class A{
long x = 5;
public long getterFunction1(){
return x;
}
}
public class B{
long x = 1;
public long getterFunction2(){
return x;
}
}
Run Code Online (Sandbox Code Playgroud)
我想将 getterFunction 作为参数传递给 mysliceGenericData()并且我想在类型 <T> (A 类或 B 类)上使用它。由于这些类具有不同的 getter 函数名称,如getterFunction2, getterFunction1. 我该怎么做?
小智 5
您可以传递一个将类型作为参数并生成 Long 的函数,如下所示:
private <T> void sliceGenericData (List<T> peData, Function<T, Long> fn)
{
...
// apply your Object
Long res = fn.apply(myObj);
...
}
Run Code Online (Sandbox Code Playgroud)
通过为该类型提供适当的方法来调用该方法:
sliceGenericData(myList, A::getterFunction1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |