.NET ではこれを回避できます。
interface I<A> {}
interface I<A, B> {}
...しかし、Java では、同じコードはコンパイル エラーになります。
実行時に型情報がなくなったとしても、型パラメーターの数に関する情報がまだそこにあると予想されることを考えると、これは興味深いことです。
この制限が型消去に関連している場合、誰かが理由を説明できますか?
.NET ではこれを回避できます。
interface I<A> {}
interface I<A, B> {}
...しかし、Java では、同じコードはコンパイル エラーになります。
実行時に型情報がなくなったとしても、型パラメーターの数に関する情報がまだそこにあると予想されることを考えると、これは興味深いことです。
この制限が型消去に関連している場合、誰かが理由を説明できますか?
生の typeを使用することから生じるあいまいさほど、型の消去には関係ありません。
I eye = null; // which 'I' is it?
JDK 5.0 でジェネリックが導入される前に記述されたコードに対応するために、生の型が許可されています。
Java では、ジェネリック クラス/インターフェイスには一定数のジェネリック パラメータがあります。それはまさに言語が定義されている方法です。
あなたが話していることに最も近いものは次のとおりです。
interface I<A> {}
interface J<A, B> extends I<A> {}
のインスタンスはJ
、タイプ の変数に代入できますI
。