我有几个预定义的静态“处理器”实现相同的方法,例如:
default double process(double num){
样本 :
public class Test {
public static void main(String[] args) {
test(Test::processor1, 1d);
test(Test::processor2, 1d);
}
static double processor1(double num){
return num * 10;
}
static double processor2(double num){
return num * 20;
}
//...
static void test(Function<Double, Double> f, double d){
// Do something util here
System.out.println(f.apply(d));
}
...
现在想象一下,我有一些可以提供附加“处理器”列表的对象。
我正在尝试使用 aninterface
来定义那些额外的“处理器”。
static interface IProcessor{
double process(double num);
}
使用附加“处理器”实现对象:
static class SomeObject{
// Just return one but should be a list...
static IProcessor getExtraProccessors(){
return new IProcessor(){
public double process(double num){
return num * 30;
}
};
}
}
在这里,一切都可以编译并且工作正常。但现在我被困住了。
使用SomeObject::getExtraProccessors
我对返回接口的静态方法有引用,如何调用接口的方法?
我的第一次尝试是
test(SomeObject::getExtraProccessors::process, 1d);
但这并不能编译给出The target type of this expression must be a functional interface
所以请你告诉我是否可以这样做,如果可以,怎么做?如果不可能,我该怎么做?