可変長引数

可変長引数は基本的に配列と同じ型とみなされる。よって、次のことがいえる。
  1. 配列と可変長引数とでオーバーロードはできない。Samp01.java
  2. 可変長引数は配列でオーバーライドできる。Samp02.java
    逆もまたできる。Samp03.java
  3. 引数として配列を渡すことができる(下記表参照)。
ただし、可変長引数は配列とまったく同じわけではない。次の規則に従う。
  1. 原則としては、配列で宣言したパラメータに、引数として個々の要素を渡すことはできない(下記表参照)。ただし例外がある。
  2. 4.の例外は、可変長引数を配列でオーバーライドしている場合に起こる。この例外は、とても奇妙なことを引き起こす。
    配列型のパラメータに、引数として個々の要素を渡せたり渡せなかったりするのである。
    これでいいのか?仕様としては疑問が残る。
    Samp06.java
パラメータ引数可・不可サンプル
int...int[]OK Samp04.java
int, int, ...OK
int[]int[]OK Samp05.java
int, int, ...NGただし例外あり