WIDENING BOXING AND VARARGS 7 RULES

WIDENING BOXING AND VARARGS 7 RULES

WBV

1. Primitive Widening > Boxing > Varargs.
2. Widening and Boxing (WB) not allowed.
3. Boxing and Widening (BW) allowed.
4. While overloading Widening + vararg and boxing + vararg are mutually exclusive of each other.
5. Widening between wrapper classes not allowed
6. Widening+varArgs & Boxing+varargs are individuall
y allowed (but not allowed in overloaded version of method)
7. Boxing+Widening is preferred over Boxing+Varargs.



foo(5);
foo(Integer i)  and foo(long l)     // long (by Rule 1)
   //Explanation:
   //int to Integer - boxing
   //int to long - widening
   // Rule 1: widening > boxing
    
foo(int...i) and foo(Integer i)   // Integer (by Rule 1)
   //Explanation:
   //int to int... - varargs
   //int to Integer - boxing
   // Rule 1: boxing > varargs
foo(long...l)   and foo(Integer i)   //  Integer (Rule 1)
   //Explanation:
   //int to long... - varargs
   //int to Integer - boxing
   // Rule 1: boxing > varargs
foo(Object o)   and foo(int...i)     // Object o (Rule 1)
   //Explanation:
   //int to int... - varargs
   //int to Object - boxing
   // Rule 1: boxing > varargs
    
foo(Object o)   and foo(long l)     // long l (Rule 1)
   //Explanation:
   //int to long - widening
   //int to Object - boxing
   // Rule 1: widening > boxing
foo(Object o)   and foo(Integer... l)   // Object o (Rule 1)
   //Explanation:
   //int to Integer... - boxing + varargs
   //int to Object - boxing
   // Rule 1: boxing > varargs
foo(Long l) and foo(int...i)     // int...i (Rule 2 )
   //Explanation:
   //int to Long - widening (to long) + boxing (to Long)
   //int to int... - varargs
   // Rule 2: widening + boxing is not allowed
foo(Long l) and foo(Integer...i) // Integer...i(Rule 2)
   //Explanation:
   //int to Long - widening (to long) + boxing (to Long)
   //int to Integer... - boxing + varargs
   // Rule 2: widening + boxing is not allowed
foo(Object o)   and foo(Long l)     // Object o (Rule 2)
   //Explanation:
   //int to Long - widening (to long) + boxing (to Long)
   //int to Object - boxing
   // Rule 2: widening + boxing is not allowed
    
foo(long...l)   and foo(Integer...i) //  ambiguous (Rule 4)
   //Explanation:
   //int to long... - widening + varargs
   //int to Integer... - boxing + varargs
   // Rule 4: widening + vararg and boxing + vararg are mutually exclusive of each other.

Yorumlar

Bu blogdaki popüler yayınlar

INGILIS DILI BUTUN ZAMANLAR

İNGİLİS DİLİNDƏ ƏN ÇOX İSTİFADƏ OLUNAN 2600 CÜMLƏ QƏLİBLƏRİ VƏ 6000 SÖZ