我阅读了关于将函数作为参数传递的下一个答案.
不过,我不明白这个想法.我的函数可以得到任何函数: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)等)
像这样的东西:
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)
| 归档时间: |
|
| 查看次数: |
2527 次 |
| 最近记录: |