Autoboxing in Java
Converting a primitive data type into an object of the corresponding wrapper class is called autoboxing. For example, converting int to Integer or converting long to Long object.
Java compiler applies autoboxing when a primitive value is:
- Passed as a parameter to a method that expects an object of the corresponding wrapper class. For example a method with Integer argument can be called by passing int, java compiler will do the conversion of int to Integer.
- Assigned to a variable of the corresponding wrapper class. For example, assigning a Long object to long variable.
Unboxing in Java
Converting an object of a wrapper type to its corresponding primitive data type is called unboxing.
Java compiler applies unboxing when an object of a wrapper class is:
- Passed as a parameter to a method that expects a value of the corresponding primitive type.
- Assigned to a variable of the corresponding primitive type.
Java Autoboxing Example
Here is a small java program showing examples of autoboxing and unboxing in java.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
package com.journaldev.util; import java.util.ArrayList; import java.util.List; public class AutoboxingUnboxing { public static void main(String[] args) { int i = 5; long j = 105L; // passed the int, will get converted to Integer object at Runtime using // autoboxing in java doSomething(i); List<Long> list = new ArrayList<>(); // java autoboxing to add primitive type in collection classes list.add(j); } private static void doSomething(Integer in) { // unboxing in java, at runtime Integer.intValue() is called implicitly to // return int int j = in; // java unboxing, Integer is passed where int is expected doPrimitive(in); } private static void doPrimitive(int i) { } } |
Note: It’s not a good idea to rely on autoboxing always, sometimes it can cause compiler error that method is ambiguous when a method is overloaded. Please refer to below screenshot for a quick example.
Read more at this StackOverflow article. Also go through java ambiguous method call error.
That’s all about autoboxing and unboxing in java. This feature is very helpful in reducing code size because we don’t have to convert primitive type to object explicitly.