为什么我们可以不导入而使用Predicate参数?

时间:2019-07-27 06:00:14

标签: import java-8 predicate

通常,当我们使用谓词时,我们需要导入java.util.function.Predicate。但就我而言,如果我们在方法(removeIf())中使用Predicate作为参数,则不需要导入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
    }
}

谢谢。

1 个答案:

答案 0 :(得分:2)

  

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

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