Java - 作为参数的函数

Ada*_* Sh 2 java

我阅读了关于将函数作为参数传递的下一个答案.

不过,我不明白这个想法.我的函数可以得到任何函数:sin(x),cos(x)等.

据我所知,我可以创建一个界面,例如:

public interface functionI<T> {

}
Run Code Online (Sandbox Code Playgroud)

这将包装它.

现在我有我的功能:

    public void needToDo(functionI<Integer> a, int x0Par, int hPar){
}
Run Code Online (Sandbox Code Playgroud)

(needToDo,例如,需要替换函数n x0par和hPar的x,并找到Max.如果我得到sin(x),我需要找到sin(x0Par)和(sin(hPar))的最大值.

我不明白我在我的功能中如何使用它.当我得到函数时,我怎么知道该怎么做,可以是任何东西(多项式,sin(x)等)

Tom*_*Tom 5

像这样的东西:

public interface Function1<RESULT,INPUT> {
    RESULT call(INPUT input);
}

public class Sin implements Function1<Double,Double> {
    public static final Sin instance = new Sin();
    private Sin() {
    }
    public Double call(Double x) {
        return Math.sin(x);
    }
}

public Double needToDo(Function1<Double,Double> aFunction, Double x0Par, Double hPar) {
   Double d1 = aFunction.call(x0Par);
   Double d2 = aFunction.call(hPar);
   return d1 > d2 ? d1 : d2;
}

public static void main(String[] args) {
    Double x0Par = 10.2;
    Double hPar = 1.9;
    Double ret = needToDo(Sin.instance, x0Par, hPar);
    System.out.println(ret);
}
Run Code Online (Sandbox Code Playgroud)