![](/img/trans.png)
[英]JAVA :access method defined in class , but not implemented by its interface
[英]Java Predicate Interface - How the method is working - Though it is not implemented in my class
雖然我還沒有實現 Predicate 接口中的方法 - 測試,但為什么在我的 class - 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);
}
雖然我還沒有實現該方法 - 測試
您擁有 lambda 表達式:
Predicate <Integer> p = i -> (i<19);
這主要是:
Predicate<Integer> p = new Predicate<Integer>() {
@Override
public boolean test(Integer i) {
return i < 19;
}
};
字節碼中的具體細節略有不同,但在大多數情況下,您可以將 lambda 表達式視為創建匿名內部 class 的簡寫。 編譯器能夠執行其他技巧以避免在現實中創建額外的類,至少在某些情況下 - 這取決於您的 lambda 表達式的作用。
較新的編譯器1 ,從版本 8(我相信)開始,在代碼中添加一個(合成)方法,主要是:
public class Inte {
public static void main(String[] args) {
Predicate<Integer> p = Inte::lambda$test$1;
...
}
// synthetic
private static boolean lambda$test$1(Integer i) {
return i < 19;
}
}
1 - 或者,在 Java 版本 8 之前,可以添加一個額外的 class 實現接口(如匿名類)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.