java - 为什么我们可以在不导入 Predicate 参数的情况下使用它?
问题描述
通常,我们在使用 Predicate 时,需要导入 java.util.function.Predicate。但在我的例子中,如果我们在方法中使用 Predicate 作为参数 (removeIf()),我们不需要导入 Predicate。这是为什么?
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args)
{
List<String> list = new ArrayList<>();
list.add("ABCDEFG");
list.add("ABC");
list.removeIf(s -> s.length() > 4);
System.out.println(list); // ABC
}
}
谢谢你。
解决方案
如果我们在方法中使用 Predicate 作为参数(removeIf()),我们不需要导入 Predicate。这是为什么?
因为Predicate
是 aFunctionalInterface
可以表示为 lambda 而无需使用任何import
s。lambda 的类型由编译器推断。
推荐阅读
- java - 继承会影响应用程序的性能吗?
- sql - 需要选择 2000 年首次购买的客户 ID - sql
- jquery - 在 JPList 库中排序 'OR' 而不是 'AND'
- r - 如何删除 R wordcloud 中的奇数字符
- mysql - 如何在查询中从表中排除记录?
- r - 如何在 Ubuntu 16.04 上将 Ms SQL 服务器与 R 连接?
- javascript - 结合 CSS 属性选择器 input[type = "text"] 和 input[type="email"]
- php - Laravel的PDF是空的
- java - 尝试在单个方法中选择和插入时出现多线程问题
- java - 转换列表
> 到 CompletableFuture - >