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