'isInstance()'
method, instanceof operation are used to check whether the specified object is
assignment-compatible with the object represented by this Class. It is the
dynamic equivalent of 'instanceof' operator.
By
using 'isInstance()', instanceof operator, you can check whether the object can
be casted to other type or not.
For
example, let’s see the definition of Integer class, it looks like below.
public
final class Integer extends Number implements Comparable<Integer> {
}
As
you see Integer is a subclass of Number, Comparable, and Object (Object is the
super class for all the classes). Now if you define, an integer variable, you
can assign it to Number, Comparable and Object types. You can check this
compatibility using 'isInstance' method.
Test.java
package com.sample.test; public class Test { public static void main(String args[]) { Integer var1 = new Integer(10); System.out.println("Can I assign var1 to Integer : " + Integer.class.isInstance(var1)); System.out.println("Can I assign var1 to Number : " + Number.class.isInstance(var1)); System.out.println("Can I assign var1 to Comparable : " + Comparable.class.isInstance(var1)); System.out.println("Can I assign var1 to Object : " + Object.class.isInstance(var1)); System.out.println("\nCan I assign var1 to Double : " + Double.class.isInstance(var1)); System.out.println("Can I assign var1 to Float : " + Float.class.isInstance(var1)); System.out.println("\nvar1 instanceof Integer : " + (var1 instanceof Integer)); System.out.println("var1 instanceof Number : " + (var1 instanceof Number)); System.out.println("var1 instanceof Comparable : " + (var1 instanceof Comparable)); System.out.println("var1 instanceof Object : " + (var1 instanceof Object)); } }
Output
Can I assign var1 to Integer : true Can I assign var1 to Number : true Can I assign var1 to Comparable : true Can I assign var1 to Object : true Can I assign var1 to Double : false Can I assign var1 to Float : false var1 instanceof Integer : true var1 instanceof Number : true var1 instanceof Comparable : true var1 instanceof Object : true
instanceof vs
isInstance()
If
you want to check the compatible class of given object at run time, then you
should use isIntance() method.
Find
the below working application.
Test.java
package com.sample.test; public class Test { /** * Return true, if we can assign object to the class represented by * <code>className</clode> * * @param className * @param object * @return */ private static boolean isCompatible(String className, Object object) { try { return Class.forName(className).isInstance(object); } catch (ClassNotFoundException e) { throw new RuntimeException("Class not found " + className + "," + e); } } public static void main(String args[]) { Integer var1 = new Integer(10); System.out.println("is var1 comptible with Integer? : " + isCompatible("java.lang.Integer", var1)); System.out.println("is var1 comptible with Number? : " + isCompatible("java.lang.Number", var1)); System.out.println("is var1 comptible with Comparable? : " + isCompatible("java.lang.Comparable", var1)); System.out.println("\nis var1 comptible with Float? : " + isCompatible("java.lang.Float", var1)); System.out.println("is var1 comptible with Boolean? : " + isCompatible("java.lang.Boolean", var1)); } }
Output
is var1 comptible with Integer? : true is var1 comptible with Number? : true is var1 comptible with Comparable? : true is var1 comptible with Float? : false is var1 comptible with Boolean? : false
No comments:
Post a Comment