Javaはコンパイル時に非ジェネリック型にコンバートしちゃうけど
C#のジェネリックは型情報を削除せずに、実行時にCLRの内部で構築されるようになってる。