Java Predicate Interface - 该方法如何工作 - 尽管它没有在我的类中实现

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)

Jon*_*eet 5

虽然我还没有实现该方法 - 测试

使用 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 表达式的作用。