java - Java lambda 参数:如何防止使用外部范围的参数?
问题描述
我确实知道 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 编译器来强制执行这种方法?
解决方案
推荐阅读
- tableau-api - 添加周末,不包括工作日
- html - 是否可以链接 :first-child 和 :last-child 伪类选择器?
- ruby-on-rails-3 - Savon::SOAPFault: (s:Client) 标头中缺少元素“RequestContext”
- c# - TPL 和内存管理
- javascript - 可以使用vue js + nuxt js隐藏broswer api(get,post)吗?
- tensorflow - 如何在本地环境中读取 GCS 路径
- macos - Jenkins 没有选择 /usr/local/bin 在 Mac 中执行作业
- jenkins - 加载groovy脚本时出现语法问题
- stored-procedures - 使用 `getclobval()` 执行 oracle 程序时出现“无效字符错误”
- android - Android Room 库与 Requery Sqlite 库冲突