在java中,如何将方法作为参数传递

Python015

在java中,如何将方法作为参数传递,第1张

可以利用java反射机制中的Method对象 该对象类似于C++里面的函数指针

示例如下:

String methodName

Method method = oneProtein.class.getMethod(methodName)

for (oneProtein e:Cell)

method.invoke(e)

方法return就好了

示列

public static void main(String[] r){

params(returnResult(1))

//打印结果1

}

private void params(int i){

System.out.println(i)

}

private int returnResult(int i){

return i

}

在java中这是没有办法做到的,因为java不是函数式编程语言,不过可以通过传递一个接口来实现。

下面解说java如何模拟:

先定义一个接口:

interface MethodInterface{

//这个方法假如就是你想要传递的方法

public String test(String s)

}

一个类中的方法的参数就是这个接口:

class TestMethod{

//java中很麻烦的,不过下面这样是可以达到目的得

public void test(MethodInterface methodInterface){

System.out.println(methodInterface.test("test"))

}

}

因为这个接口是你定义的,所以你知道这个接口里面一定有一个叫test的方法

class Method implements MethodInterface{

public String test(String s) {

return s

}

} public class Test {

public static void main(String[] args) {

new TestMethod().test(new Method())

}

}

在jdk8中是不需要这么复杂的,但是原理还是一样的,只不过jdk8中的lambda表达式会自动帮你处理这些事情