The java.lang.Class class offers a set of methods to help to determine if the given Class object represents a specific group of data type:
- boolean isAnnotation() - Returns true if this Class object represents an annotation type.
- boolean isArray() - Determines if this Class object represents an array class.
- boolean isEnum() - Returns true if and only if this class was declared as an Enum in the source code.
- boolean isInterface() - Determines if the specified Class object represents an interface type.
- boolean isPrimitive() - Determines if the specified Class object represents a primitive type.
Suppose you create two instances of class called Employee e.g.
In this case it will print "A and B are instances of same class" because they are both instance of Employee class.
Employee A = new Employee(); Employee B = new Employee(); if(A.getClass() == B.getClass()) { System.out.println("A and B are instances of same class"); } else{ System.out.println("A and B are instances of different class"); }
In this case it will print "A and B are instances of same class" because they are both instance of Employee class.
Class.forName()
It gives you the class object, which is useful for reflection. The methods that this object has are defined by Java, not by the programmer writing the class. It returns the Class-Type for the given name.Example
Class employee = Class.forName("com.gsms.common.dao.entity.Employee"); System.out.println("Number of public methods: " + employee.getMethods().length);
By using above code, we can find out the total number methods in Employee class.
Class.newInstance()
It creates a new instance of the class represented by this Class object. The class is instantiated as if by a new expression with an empty argument list. In other words, this is here actually equivalent to a new Employee() and returns a new instance of Employee.But, the big difference with the traditional new is that newInstance allows to instantiate a class that you don't know until runtime, making your code more dynamic.
Example
Employee employee = (Employee) Class.forName("test.MyClass").newInstance(); System.out.println("String representation of Employee instance: " + employee.toString());
We need Class.forName() and Class.newInstance() because many times it happens that we don’t know the name of the class to instantiate while writing code , we may get it from config files ,database , network or from any upstream. This way of creating object which provides a platform for many frameworks e.g. Spring ,Struts which uses java reflection.
Please feel free to post your comments if you have any question. Also, if you find any error then please let me know.
0 comments