Program to demonstrate how to determine information about class methods at runtime using Java Reflection API.
package com.hubberspot.reflection; import java.lang.reflect.Method; // Create a dummy class having methods which are // private, protected and public. It should have // a return type and few parameters. class Cricket { private int runs; private String playerName; public void setRun(int runs) { } protected int getRun(int rate) { return rate*runs; } private void playerName( String name ) { playerName = name; } public void playerRuns(int rate , int runs , String playerName) { } } public class MethodFindings { public static void main(String[] args) { // Creating a instance of class Class of type Cricket Class cricketClass = Cricket.class; // object of class Instance has a method by name // getMethods() which returns back a list of // public methods in the form of array // The array type is of Method class Method[] methodsArr = cricketClass.getMethods(); for (int j = 0; j < methodsArr.length; j++) { // Method class has method by name getName() // which returns back the name of the method String methodName = methodsArr[j].getName(); System.out.println("Name of the method : " + methodName); // Method class also has a method by name getReturnTypes() // which returns a Class object that represents the formal // return type of the method represented by Method object. String returnType = methodsArr[j].getReturnType().getName(); System.out.println("Return Type of the method : " + returnType); // Method class also has a method called as getParameterTypes(). // Returns an array of Class objects of parameter types, // in declaration order. Returns an array of length 0 if // the underlying method takes no parameters. Class[] parameterTypes = methodsArr[j].getParameterTypes(); System.out.print("Parameter Types in the method :"); for (int k = 0; k < parameterTypes.length; k ++) { String paramTypeName = parameterTypes[k].getName(); System.out.print(" " + paramTypeName); } System.out.println(); } System.out.println("-------------------------------------------"); System.out.println("For methods that are declared private and protected etc... "); // Class object also has a method by name getDeclaredMethods(). // Returns an array of Method objects reflecting all the methods // declared by the class. This includes public, protected, // default access and private methods, but excludes inherited methods. // Rest of the code is same as above ..... methodsArr = cricketClass.getDeclaredMethods(); for (int j = 0; j < methodsArr.length; j++) { String methodName = methodsArr[j].getName(); System.out.println("Name of the method : " + methodName); String returnType = methodsArr[j].getReturnType().getName(); System.out.println("Return Type of the method : " + returnType); Class[] parameterTypes = methodsArr[j].getParameterTypes(); System.out.print("Parameter Types in the method :"); for (int k = 0; k < parameterTypes.length; k ++) { String paramTypeName = parameterTypes[k].getName(); System.out.print(" " + paramTypeName); } System.out.println(); } } }Output of the program :