将函数作为参数传递给 Function,并在 Generic 对象上使用它

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)