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 :