Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(Java)函数是否可以返回运算符?_Java_Operators - Fatal编程技术网

(Java)函数是否可以返回运算符?

(Java)函数是否可以返回运算符?,java,operators,Java,Operators,我想知道是否可以像返回对象或类型一样返回运算符 这将用于通过二维坐标数组进行解析,以确定两个多边形重叠处的边界框。函数的输出将确定for循环的布尔语句,因此算法可以根据多边形的运动方向从多边形的后面开始解析 公共函数(int值){ 如果(值=; } return=和很遗憾,否,您无法返回运算符。根据有关以下内容的说明: 返回表达式opt; 表达式必须表示某种类型T的变量或值,否则会发生编译时错误 因为运算符不是变量或值,所以不能返回它 为什么不让方法进行比较: public boolean fu

我想知道是否可以像返回对象或类型一样返回运算符

这将用于通过二维坐标数组进行解析,以确定两个多边形重叠处的边界框。函数的输出将确定for循环的布尔语句,因此算法可以根据多边形的运动方向从多边形的后面开始解析

公共函数(int值){
如果(值<0){
返回>=;
}

return=和很遗憾,否,您无法返回运算符。根据有关以下内容的说明:

返回表达式
opt

表达式必须表示某种类型T的变量或值,否则会发生编译时错误

因为运算符不是变量或值,所以不能返回它

为什么不让方法进行比较:

public boolean function(int value, int num1, int num2){
    if(value < 0) {
        return num1 >= num2;
    }
    return num1 <= num2;
}

很遗憾,没有,您无法返回操作员。根据有关以下方面的说明:

返回表达式
opt

表达式必须表示某种类型T的变量或值,否则会发生编译时错误

因为运算符不是变量或值,所以不能返回它

为什么不让方法进行比较:

public boolean function(int value, int num1, int num2){
    if(value < 0) {
        return num1 >= num2;
    }
    return num1 <= num2;
}
您可以返回:

公共双预测函数(int值){
如果(值<0){
返回(a,b)->a>=b;
}
return(a,b)->a您可以返回a:

公共双预测函数(int值){
如果(值<0){
返回(a,b)->a>=b;
}

return(a,b)->a您可以使用Java8的功能接口

由于需要两个操作数和一个布尔结果,因此可以简单地使用,但由于希望两个操作数的类型相同,因此需要重复该类型,因此可以创建一个新的函数接口,例如命名为
BinaryPredicate

interface BinaryPredicate<T> extends BiPredicate<T, T> {
    // nothing to add
}
如果希望操作数为
int
值,可以改为创建:

interface IntBinaryPredicate {
    boolean test(int a, int b);
}
然后按照以下方法进行操作:

public static IntBinaryPredicate intOperator(int value){
    if (value < 0)
        return (a, b) -> a >= b;
    return (a, b) -> a <= b;
}

您可以使用Java8的功能接口

由于需要两个操作数和一个布尔结果,因此可以简单地使用,但由于希望两个操作数的类型相同,因此需要重复该类型,因此可以创建一个新的函数接口,例如命名为
BinaryPredicate

interface BinaryPredicate<T> extends BiPredicate<T, T> {
    // nothing to add
}
如果希望操作数为
int
值,可以改为创建:

interface IntBinaryPredicate {
    boolean test(int a, int b);
}
然后按照以下方法进行操作:

public static IntBinaryPredicate intOperator(int value){
    if (value < 0)
        return (a, b) -> a >= b;
    return (a, b) -> a <= b;
}
什么?什么?
IntBinaryPredicate intOp = intOperator(1);
if (intOp.test(13, 42))