Possible Duplicate:
How to determine an object's class (in Java)?
Java determine which class an object is
I have following sample incomplete method to compare the object type of a given object
public void test(Object value) {
if (value.getClass() == Integer) {
System.out.println("This is an Integer");
}else if(value.getClass() == String){
System.out.println("This is a String");
}else if(value.getClass() == Float){
System.out.println("This is a Fload");
}
}
we can call this method like
test("Test");
test(12);
test(10.5f);
this method is not actually working, please help me to make it work
You want
instanceof
:This will be true even for subclasses, which is usually what you want, and it is also null-safe. If you really need the exact same class, you could do
or
Use
value instanceof YourClass
You forgot the
.class
:Note that this kind of code is usually the sign of a poor OO design.
Also note that comparing the class of an object with a class and using instanceof is not the same thing. For example:
is false, whereas
is true.
Whether one or the other must be used depends on your requirements.
You can compare class tokens to each other, so you could use
value.getClass() == Integer.class
. However, the simpler and more canonical way is to useinstanceof
:Notes:
instanceof C
matches for subclasses ofC
too. However, in this case all the classes listed arefinal
, so they have no subclasses. Thusinstanceof
is probably fine here.as JB Nizet stated, such checks are not OO design. You may be able to solve this problem in a more OO way, e.g.