2

このコードがあいまいな過負荷エラーをスローする理由を誰か説明してもらえますか?確かに Integer メソッドはより具体的で適用可能ですか?

ありがとう、

ネッド

package object_orientation;
public class Ambiguous {
    //ambiguous error compiler unsure whether boxing is needed or not
    static void overload(Integer... d){
        System.out.println("Integer");
    }

    static void overload(long... d){
        System.out.println("Long");
    }

    public static void main(String a[]){
        int i = 1;
        overload(i);
    }
}
4

1 に答える 1

3

Java のこれらの概念は役立つはず ですBoxing + Widening is allowedが、not Widening + Boxing.

Widening、Boxing、および Vararg のこれらのルールは、次のことに役立ちます。

  1. プリミティブの拡張 > ボクシング > Varargs。
  2. ワイドニングとボクシング (WB) は許可されていません。
  3. ボクシングとワイドニング (BW) が許可されます。
  4. オーバーロード中、Widening + vararg と Boxing + vararg は相互に排他的な方法でのみ使用できます
  5. ラッパー クラス間の拡張は許可されていません。
  6. Widening+varArgs と Boxing+varargs は個別に許可されます (ただし、メソッドのオーバーロード バージョンでは許可されません)。
  7. Boxing+Varargs よりも Boxing+Widening が優先されます。

お役に立てれば。

于 2013-08-19T13:12:10.673 に答える