訂正:可変長パラメータと配列パラメータの互換性
以前、可変長パラメータと配列パラメータの互換性として解説を書きました。最後に、コンパイルエラーになるサンプルコードを掲載していますが、そのコードをJoshua Blochにパズルとしてどうかということで以前送りました。
JavaOneに向けて「Java Puzzlers」セッションの準備を彼は行っているのですが、私の書いたサンプルコードをNeal Gafterに彼が見せたところ、コンパイラーのバグということでバグ登録されたようです。
本来ならば、
つまり、可変長パラメータとしてのメソッド呼び出しが可能かどうかは、オブジェクトの実際の型ではなく、それを参照している型の宣言において該当メソッドが可変長パラメータとされている必要があることになります。
JavaOneに向けて「Java Puzzlers」セッションの準備を彼は行っているのですが、私の書いたサンプルコードをNeal Gafterに彼が見せたところ、コンパイラーのバグということでバグ登録されたようです。
本来ならば、
b.f(1,2,3)
の呼び出しもコンパイルエラーにならなければいけないということでした。つまり、可変長パラメータとしてのメソッド呼び出しが可能かどうかは、オブジェクトの実際の型ではなく、それを参照している型の宣言において該当メソッドが可変長パラメータとされている必要があることになります。
この記事へのコメント