4
我試圖運行下面的代碼被JDK8感謝下編譯罰款類型推斷:JDK8類型推斷問題
public static <A,B> B convert(A a) {
return (B) new CB();
}
public static void main(String[] args) {
CA a = new CA();
CB b = convert(a); //this runs fine
List<CB> bl = Arrays.asList(b); //this also runs fine
List<CB> bl1 = Arrays.asList(convert(a)); //ClassCastException here
}
但是,在運行,這將引發ClassCastException異常:CB不能轉換爲[Ljava.lang .Object,但CB b = convert(a)正常工作。
任何想法爲什麼?
等等,轉換甚至在做什麼?它的參數被忽略,所以傳入的內容並不重要。 – Carcigenicate
您使用哪個JRE版本?我在1.8.0_92上得到了一個操作數棧上的java.lang.VerifyError:Bad type。順便說一句,使用類型見證對我有用:'List bl1 = Arrays.asList(Test。 convert(a));' –
@StefanZobel確實有效,但我用了150次左右的用法並且手動更改並不容易 - 我希望JDK8能夠自動進行推理 –