Wrapper class in java are the Object representation of eight primitive types in java. All the wrapper classes in java are immutable and final.
Java 5 autoboxing and unboxing allows easy conversion between primitive types and their corresponding wrapper classes in java programs.
Wrapper Class in Java
Below table shows the primitive types and their wrapper class in java.
Primitive type | Wrapper class | Constructor Arguments |
---|---|---|
byte | Byte | byte or String |
short | Short | short or String |
int | Integer | int or String |
long | Long | long or String |
float | Float | float, double or String |
double | Double | double or String |
char | Character | char |
boolean | Boolean | boolean or String |
Why do we need wrapper classes?
I think it was a smart decision to keep primitive types and Wrapper classes separate to keep things simple. We need wrapper classes when we need a type that will fit in the Object-Oriented Programming like Collection classes. We use primitive types when we want things to be simple.
Primitive types can’t be null but wrapper classes can be null.
Wrapper classes can be used to achieve polymorphism.
Here is a simple program showing different aspects of wrapper classes in java.
WrapperClasses.java
package com.journaldev.misc;
import java.util.ArrayList;
import java.util.List;
public class WrapperClasses {
private static void doSomething(Object obj){
}
public static void main(String args[]){
int i = 10;
char c = 'a';
//primitives are simple to use
int j = i+3;
//polymorphism achieved by Wrapper classes, we can't pass primitive here
doSomething(new Character(c));
List<Integer> list = new ArrayList<Integer>();
//wrapper classes can be used in Collections
Integer in = new Integer(i);
list.add(in);
//autoboxing takes care of primitive to wrapper class conversion
list.add(j);
//wrapper classes can be null
in = null;
}
}
all contents that you can provide is good and very useful when I do my coding.
that was cool information about the wrapper class basics
What does it mean “Wrapper classes can be used to achieve polymorphism” ??
As show in the example the doSomething(Object object) can take any generic parameter since the attribute is of type Object i.e Superclass of all object. This cannot be achieved with primitive data type.
Better to say it can achieve runtime polymorphism