为什么我们可以在不导入的情况下使用谓词参数



通常,当我们使用Predicate时,我们需要导入java.util.function.Predicate。但就我而言,如果我们在方法中使用谓词作为参数(removeIf(((,我们不需要导入谓词。为什么?

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
    }
}

谢谢。

如果我们在方法中使用谓词作为参数(removeIf(((,我们不会 需要导入谓词。为什么?

由于Predicate是一个FunctionalInterface,可以在不使用任何import的情况下表示为 lambda。lambda 的类型由编译器推断。

相关内容

最新更新