首页 > 解决方案 > 为什么我们可以在不导入 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
    }
}

谢谢你。

标签: javaimportjava-8predicate

解决方案


如果我们在方法中使用 Predicate 作为参数(removeIf()),我们不需要导入 Predicate。这是为什么?

因为Predicate是 aFunctionalInterface可以表示为 lambda 而无需使用任何imports。lambda 的类型由编译器推断。


推荐阅读