4
私は推論入力するJDK8のおかげ下罰金コンパイルされている次のコードを実行しようとしています:CBは、[Ljava.langにキャストすることはできません。これは、ClassCastExceptionがスローランニング、しかし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
}
を.ObjectしかしCB b = convert(a)はうまく動作します。
理由は何ですか?
待って、何を変換していますか?引数は無視されるので、渡される内容は関係ありません。 – Carcigenicate
どのJREバージョンを使用していますか?私は1.8.0_92で 'java.lang.VerifyError:オペランドスタック上の不正な型 'を取得します。 Btwは私のために働いています:リスト bl1 = Arrays.asList(テスト。 convert(a)); ' –
@StefanZobel確かに動作しますが、私は約150の使用法を持っていて、手動で変更するのは簡単ではありません - 私はJDK8が自動的に推論を行うことを望んでいた –