特定の問題で奇妙な動作をする1つのJavaコンパイルシナリオに混乱しました。
A と B は別個のクラスであり、それらの間に関係がないため、以下のコードはコンパイル エラー (型をキャストできません) を返します。
A a = new A();
B b = new B();
B b1 = (B)a;
A a1 = (A)b;
同様に、リストとマップを互いにキャストすると、コンパイルエラーが発生するはずですが、そのようなエラーは発生しません。もちろん、実行時に ClassCastException が発生しています。
List<String> listObj = new ArrayList<String>();
Map<Integer,Float> mapObj = new HashMap<Integer,Float>();
Map newMapObj = (Map) listObj;
List newListObj = (List) mapObj;
この調整の理由は何でしょうか...