java 中 如何将“一个类的方法 ”作为参数传到“另一个类的方法”
在C++中通过指针调用即可,在Java中使用方法接口
方式一 方法接口
a 先定义一个接口(定义抽象方法,理解成函数参数的规范)
public interface MethodInterface {
//这个方法假如就是你想要传递的方法
public String test(String s);
}
b 不同函数实现接口(具体的函数参数)
public class Method implements MethodInterface {
@Override
public String test(String s) {
return s;
}
}
public class Method1 implements MethodInterface {
@Override
public String test(String s) {
return s+s;
}
}
c 调用函数参数的方法(调用规范【接口】)
public class TestMethod {
//接口是我定义的 所以我知道接口中有test方法,参数为String
public void test(MethodInterface methodInterface){
System.out.println(methodInterface.test("test"));
}
}
d 利用接口的多态实现多种方法的调用
@Test
public void test1(){
//testtest
new TestMethod().test(new Method1());
//test
new TestMethod().test(new Method());
}
方式2 Lambda Java8新特性
允许函数作为一个方法的参数
a 先定义一个接口(定义抽象方法,理解成函数参数的规范)
//限定接口只能有一个方法
@FunctionalInterface
public interface MethodInterface {
//这个方法假如就是你想要传递的方法
public String test(String s);
}
b 调用函数参数的方法(调用规范【接口】)
public void test1(MethodInterface methodInterface,String s){
//接口是我定义的 所以我知道接口中有test方法,参数为String
System.out.println(methodInterface.test(s));
}
c直接调用含有函数参数的方法,不用函数接口实现用lambda
@Test
public void test2(){
//testtest
new TestMethod().test1(s -> {return s+s;},"test");
// testtesttest
new TestMethod().test1(s -> {return s+s+s;},"test");
}