我确实知道lambda和参数如何在Java中工作。 问题在于,在lambda主体中,我被强制执行以仅使用lambda参数,并且(如果可能)让编译器在使用外部范围变量时抛出错误。
示例:
坏:
int outerInt = 3;
Predicate<String> lamb = s -> {
return outerInt==0 && s.equals("x"); //using outerInt -> bad!
};
bool res = lamb.test("?");
好:
int outerInt = 3;
BiPredicate<String, Integer> lamb = (s, i) -> {
return i==0 && s.equals("x"); //using lambda parameter 'i' instead of outerInt-> good!
};
bool res = lamb.test("?", outerInt);
您将如何设计代码,或者我们可以通过某种方式设置Java编译器以实施此方法?