use*_*964 1 java interface predicate
虽然我还没有实现 Predicate 接口中的方法 - test - ,但为什么在我的类 - inte 中没有任何主体的情况下执行该方法?
package newone;
import java.util.function.Predicate;
public class inte {
public static void main(String[] args) {
Predicate <Integer> p = i -> (i<19);
System.out.println( p.test(22));
}
@FunctionalInterface
public interface Predicate<T> {
boolean test(T var1);
}
Run Code Online (Sandbox Code Playgroud)
虽然我还没有实现该方法 - 测试
使用 lambda 表达式,您可以得到:
Predicate <Integer> p = i -> (i<19);
Run Code Online (Sandbox Code Playgroud)
这主要是这样的:
Predicate<Integer> p = new Predicate<Integer>() {
@Override
public boolean test(Integer i) {
return i < 19;
}
};
Run Code Online (Sandbox Code Playgroud)
字节码中的具体细节略有不同,但在大多数情况下,您可以将 lambda 表达式视为创建匿名内部类的简写。编译器能够执行其他技巧来避免在现实中创建额外的类,至少在某些情况下 - 这取决于您的 lambda 表达式的作用。