本文介紹了編譯錯誤:&;qot;&;#39;&;lt;&;gt;&;#39;不能與匿名類一起使用。的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我非常愿意這樣寫:
Lists.transform(vals,
new Function<>() {
public List<ValEntry> apply(Validator<? super T> input) {
return input.validate(value);
}
});
…比這個:
Lists.transform(vals,
new Function<Validator<? super T>, List<ValEntry>>() {
public List<ValEntry> apply(Validator<? super T> input) {
return input.validate( value );
}
});
但Java編譯器給我以下錯誤消息:
'<>' cannot be used with anonymous classes
有沒有根本原因?或者他們只是跳過了JDK 7中的功能,也許他們在8中做到了這一點?
推薦答案
根據project coin documentation:
在內部,Java編譯器運行的類型集比
那些可以在Java程序中顯式地寫下來的代碼。這個
不能在Java程序中編寫的編譯器內部類型有
稱為不可賦值類型。不可指定的類型可以作為
鉆石使用的推理結果。因此,將鉆石與
由于通常這樣做,因此不支持匿名內部類
將需要對類文件簽名屬性進行擴展以
表示不可表示的類型,這是事實上的JVM更改。這是可行的
未來的平臺版本可能允許在創建時使用鉆石
只要推斷的類型是可表示的,就是匿名內部類。
編輯
因此,在未來的版本中這是可能的。這在Java 8中仍然是不可能的,但現在我們有了lambdas,所以不需要那么多。
這篇關于編譯錯誤:&;qot;&;#39;&;lt;&;gt;&;#39;不能與匿名類一起使用。的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,