在Java中将函数作为引用传递给另一个方法
我在ABC类中有一个函数,其定义大致如下在Java中将函数作为引用传递给另一个方法,java,pass-by-reference,Java,Pass By Reference,我在ABC类中有一个函数,其定义大致如下 Boolean getBool(Value val1, Value val2) { if (val1.getVal() == val2.getVal()) { return true; } return false; } 如何将这个方法作为引用传递给另一个方法,比如说operate()并从那里调用它 String operate(<<<Pass getBool method here>>>, Pa
Boolean getBool(Value val1, Value val2) {
if (val1.getVal() == val2.getVal()) {
return true;
}
return false;
}
如何将这个方法作为引用传递给另一个方法,比如说operate()并从那里调用它
String operate(<<<Pass getBool method here>>>, Param1) {
val1 = some computations on Param1
val2 = some other computations on Param2
Boolean value = <<<<<Call getBool with val1 and val2 here>>>>>
if (value) { return "Yes"; }
else { return "No"; }
}
字符串操作(,参数1){
val1=参数1上的一些计算
val2=参数2上的一些其他计算
布尔值=
如果(值){返回“是”;}
else{返回“否”;}
}
请帮忙!!
我读过一些解决方案,但它们要么通过引用传递一个带参数的方法,但返回类型无效,要么通过引用传递一个不带任何参数和返回类型的方法。
我想通过引用参数和返回类型来传递函数。您的方法可以用Java 8函数接口
BiFunction
表示,因为它接受两个参数并返回一个值
String operate(BiFunction<Value,Value,Boolean> function, TypeOfParam1 param1, TypeOfParam2 param2) {
val1 = some computations on param1
val2 = some other computations on param2
Boolean value = function.apply(val1,val2);
return value ? "Yes" : "No";
}
使用双功能类:
public class Test {
private static Boolean getBool(int val1, int val2) {
if (val1 == val2) {
return true;
}
return false;
}
private static String operate(BiFunction<Integer, Integer, Boolean> fun, int param1, int param2) {
int val1 = param1;
int val2 = param2;
Boolean value = fun.apply(val1, val2);
if (value) {
return "Yes";
} else {
return "No";
}
}
public static void main(String[] args) {
operate(TestStaticReference::getBool, 1, 2);
}
}
公共类测试{
私有静态布尔getBool(int-val1,int-val2){
if(val1==val2){
返回true;
}
返回false;
}
私有静态字符串操作(双功能乐趣、int-param1、int-param2){
int val1=param1;
int val2=param2;
布尔值=fun.apply(val1,val2);
如果(值){
返回“是”;
}否则{
返回“否”;
}
}
公共静态void main(字符串[]args){
操作(TestStaticReference::getBool,1,2);
}
}
布尔值=getBool(val1,val2)代码>?您可以使用BiPredicate
类型。下面是一个列表:或者,您可以定义自己的函数接口。简单的方法是将对该方法的调用封装在lambda中,然后传递lambda。Java有一个:
iirc,也可以用来获取对方法的引用。在这里,您将学习如何将函数作为参数传递:虽然这个问题在技术上是一个重复的问题,但是如果您可以使用Java8Lambdas,那么阅读其他问题和答案时,您往往会淹没在Java-8之前的内容中,而这些内容是您不想要的。我想你会从中得到最好的答案。谢谢!这有助于:)
public class Test {
private static Boolean getBool(int val1, int val2) {
if (val1 == val2) {
return true;
}
return false;
}
private static String operate(BiFunction<Integer, Integer, Boolean> fun, int param1, int param2) {
int val1 = param1;
int val2 = param2;
Boolean value = fun.apply(val1, val2);
if (value) {
return "Yes";
} else {
return "No";
}
}
public static void main(String[] args) {
operate(TestStaticReference::getBool, 1, 2);
}
}