
isPrimitive method
There is isPrimitive() method in java.lang.Class
int intVariable = 10;
Class clazz = int.class;
boolean isIntPrimitive = class.isPrimitive();Looks a little stupid, right?
You already know that this is primitive because you write int.class.
You’d like to have something like public boolean isPrimitive(Object object).
private boolean isPrimitive(Object object) {
Class clazz = object.getClass();
return clazz.isPrimitive();
}But this will not work.
The problem is that when you call isPrimitive(intVariable) intVariable will be auto-boxed to Integer which is already not a primitive. So for int intVariable our method will return false.
Let’s take a look at some “primitive wrappers”
Check if object is Integer
public boolean isInteger(Object object) {
return object != null && object.getClass() == Integer.class
}Check if object is Boolean
public boolean isBoolean(Object object) {
return object != null && object.getClass() == Boolean.class
}Check if object is Character
public boolean isCharacter(Object object) {
return object != null && object.getClass() == Character.class
}Check if object is Byte
public boolean isByte(Object object) {
return object != null && object.getClass() == Byte.class
}Check if object is Short
public boolean isShort(Object object) {
return object != null && object.getClass() == Short.class
}Check if object is Long
public boolean isLong(Object object) {
return object != null && object.getClass() == Long.class
}Check if object is Float
public boolean isFloat(Object object) {
return object != null && object.getClass() == Float.class
}Check if object is Double
public boolean isDouble(Object object) {
return object != null && object.getClass() == Double.class
}So all we can do is to check if an object is a primitive in wider meaning - “wrapper for primitive”
Check if object is primitive wrapper
public boolean isWiderPrimitive(Object object) {
if (object == null) {
return false;
}
Class clazz = object.getClass();
if (clazz == Boolean.class || clazz == Character.class ||
clazz == Byte.class || clazz == Short.class ||
clazz == Integer.class || clazz == Long.class ||
clazz == Float.class || clazz == Double.class) {
return true;
}
return false;
}Since this is “isWiderPrimitive” I would include also String and Void (yes there is the Void class in Java)
The final version of our isWiderPrimitive method looks like this
public boolean isWiderPrimitive(Object object) {
if (object == null) {
return false;
}
Class clazz = object.getClass();
if (clazz == Boolean.class || clazz == Character.class ||
clazz == Byte.class || clazz == Short.class ||
clazz == Integer.class || clazz == Long.class ||
clazz == Float.class || clazz == Double.class ||
clazz == String.class || clazz == Void.class) {
return true;
}
return false;
}