我有1个班级,如下所述:
public class mathAdd {
public int add(int val1,int val2) {
int res = 0;
res = val1+val2;
return res;
}
}
我想将“ add”方法作为参数传递,类似于下面的代码所示?
public class test4 {
public static void main(String[] args) {
test4 t4 = new test4();
mathAdd m1 = new mathAdd();
t4.testMeth(m1.add);
}
public void testMeth(Object obj.meth()) {
}
}
是否可以这样做?如果是,我将如何实现
答案 0 :(得分:1)
您不能那样做。传递现有方法作为参数的一种方法是使目标方法本身具有功能接口类型,然后可以对要作为参数传递的方法使用方法引用:
public void testMeth(IntBinaryOperator method) {
//IntBinaryOperator defines a method that takes 2 ints and returns an int
//And that's the signature matching mathAdd#add
//you can call the method using something like
int result = method.applyAsInt(int1, int2);
}
然后在main
中输入:
public static void main(String[] args) {
test4 t4 = new test4();
mathAdd m1 = new mathAdd();
t4.testMeth(m1::add); //pass the 'add' method
}
答案 1 :(得分:-1)
这是您要传递的返回类型,而不是方法。当你写
t4.testMeth(m1.add());
它将传递返回类型为int的函数,因此您需要将testMethod的参数写为
public void testMeth(int funResult) {
}