通常,当我们使用谓词时,我们需要导入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
}
}
谢谢。
答案 0 :(得分:2)
如果我们在方法(removeIf())中使用谓词作为参数,则不会 需要导入谓词。为什么会这样?
由于Predicate
是一个FunctionalInterface
,可以不使用任何import
的情况表示为lambda。 lambda的类型由编译器推断。