Here is a very useful java conversion table that I’ve created while preparing for the Certified SE Java Programmer exam.
Read also: What is and how to use Java varargs.
And here is a complete overview of the Java Golden rules of widening, boxing & varargs:
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 individually allowed (but not allowed in overloaded version of method)
7. Boxing+Widening is preferred over Boxing+Varargs.
Examples:
We are calling a function foo(5):
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.
More explanation here.
See Also
- Java test with JUnit
- Java
- Simple Light
- Java regex by example: strings
- Java Basic Programs: 5 Simple Examples