Program to demonstrate Usage of Reflection API for getting fields name and type in Java
Output of the program :
package com.hubberspot.example;
import java.lang.reflect.Field;
class Employee {
public String firstname;
protected String lastname;
private String email;
static int counter;
}
public class EmployeeTest {
public static void main(String[] args) {
// Create a test object. We can create
// and apply reflection on any class
// we want without knowing which fields
// it has. We are taking Employee here.
Employee employee = new Employee();
// Getting Class associated with Employee
Class employeeClass = employee.getClass();
System.out.println("-----------------------------------");
try {
// Using Field class we can get field of any
// class we want. Here we are getting field
// firstname by calling getField method of the
// Class associated with Employee with public specifier
Field singleField = employeeClass.getField("firstname");
// getName returns the name of the field
System.out.println("Field name = " + singleField.getName());
// getType().getName() returns the type of the field
System.out.println("Field type = " + singleField.getType().getName());
System.out.println("-----------------------------------");
// getDeclaredFields methods returns array of fields which
// involve all fields irrespective of access specifier such as
// public, private, protected and default
Field[] declaredFields = employeeClass.getDeclaredFields();
System.out.println("Number of fields = " + declaredFields.length);
for (Field field : declaredFields) {
System.out.println("Field name = " + field.getName());
System.out.println("Field type = " + field.getType().getName());
}
System.out.println("-----------------------------------");
// getFields methods returns array of fields which
// involve fields only with access specifier as public
Field[] fields = employeeClass.getFields();
System.out.println("Number of fields = " + fields.length);
for (Field field : fields) {
System.out.println("Field name = " + field.getName());
System.out.println("Field type = " + field.getType().getName());
}
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
Output of the program :
