我想创建一个执行特定任务的方法,但随后使用该任务的结果调用另一个方法.很简单,但诀窍是我希望方法(第一个被第一个调用的方法)作为第一个方法的参数.
我可能解释得非常糟糕,所以这就是我认为的样子
public static void main(String[] args) {
double[][] data = {
{2,6},
{-32,5}
}
loop(data,{System.out.println(row * col)});
}
public static void loop(double[][] data,somemethod(row,col)) {
for (int row = 0;row < data.length;row++)
for (int col = 0;col < data[0].length;col++)
somemethod(row,col);
}
Run Code Online (Sandbox Code Playgroud)
因此,循环方法执行任务,然后运行作为参数传递的代码.这可以在java中完成吗?我觉得我已经在某处看到了它.
Java-8之前的方法是使用您想要调用的方法创建一个接口:
interface MyCallback {
void someMethod(int row, int col);
}
Run Code Online (Sandbox Code Playgroud)
您使用所需的实现创建一个对象:
class MyCallbackImpl implements MyCallback {
public void somemethod(int row, int col) {
System.out.println(row * col);
}
}
Run Code Online (Sandbox Code Playgroud)
并让该方法采用实现该接口的参数:
public static void loop(double[][] data, MyCallback mycallback) {
for (int row = 0;row < data.length;row++)
for (int col = 0;col < data[0].length;col++)
mycallback.somemethod(row,col);
}
Run Code Online (Sandbox Code Playgroud)
如果您不想为此创建单独的命名类,则可以使用匿名内部类创建对象,调用循环方法,如:
loop(data, new MyCallback() {
public void somemethod(int row, int col) {
System.out.println(row * col);
}});
Run Code Online (Sandbox Code Playgroud)