2016-05-26 11 views
3
public static void main(String[] a){ 
      VarArgs obj = new VarArgs(); 
      obj.add(1,2); 
} 

class VarArgs{ 
     int add(int size, Integer... params){ 
     } 
} 

このコードは機能します。しかし、私はそれがあいまいなエラーを与えるだろうと思った。型キャストのため。あいまいなエラーではありませんか?

どのように動作しますか?

+1

'2'は' Integer'オブジェクトにオートボックスされます。 – Berger

答えて

6

2つのの方法が同じ場合にエラーが発生します。実際に、そのエラーを修正する一般的な方法の1つは、2つの方法のいずれかを削除することです。 (。Compiler error : reference to call ambiguousを参照)

をお使いの場合には、そもそも唯一の方法がありますので、あいまいではありません:2は、単に、その後new Integer[] { Integer.valueOf(2) }に、Integer.valueOf(2)にautoboxedます。

+0

ありがとうございます。その他のシナリオ - >署名が 'add(Integer ... params、int size)'ならば、私はあいまいさを取ります。私は正しい? –

+2

@GopsAB ellipsesパラメータは最後のパラメータでなければならないため、コンパイルされません。 –

+0

@JornVerneeありがとう –

関連する問題