所以我希望能够在不存储值boolean
/ true
)的情况下存储false
测试,我希望能够通过方法传递多个这些boolean
测试。甚至可能切换参数和运算符。反正有吗?
我已经看到有些人将它们保存为String
然后使用BeanShell中的Interpreter
,但还有其他方法吗?或者我应该尽量创造一种方法来做到这一点?
答案 0 :(得分:2)
在Java 8中,您可以使用lambda。 java.util.function
有许多类,表示返回布尔值的函数(Predicate
,BiPredicate
,IntPredicate
,DoublePredicate
等),这些类型可以是用于保存返回布尔值的表达式。例如:
BiPredicate<Integer,Integer> pred = (x, y) -> x > y;
现在pred
包含一个测试第一个整数是否更大的函数,但是在您使用类似
boolean result = pred.test(arg1, arg2);
答案 1 :(得分:0)
您可以使用匿名函数存储表达式以供将来使用。例如:
class GreaterThanTester implements Callable<Boolean> {
private int a;
private int b;
public GreaterThanTester(int a, int b) {
this.a = a;
this.b = b;
}
@Override
public Boolean call() {
return (a > b);
}
}
然后,您可以像这样存储表达式:
Callable<Boolean> storedTester = new GreaterThanTester(10, 20);
然后在评估时间:
Boolean result = storedTester.call();
您可以像这样创建许多不同类型的Tester
,并将它们全部存储为Callable<Boolean>
。