WIDENING BOXING AND VARARGS 7 RULES
WIDENING BOXING AND VARARGS 7 RULES
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)
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
Yorum Gönder