本文共 1496 字,大约阅读时间需要 4 分钟。
Reflection允许运行中的Java程序对自身进行检查并能直接操作程序的内部属性。
以下为类的成员方法的查询程序。
import java.lang.reflect.Method;import java.util.Scanner;public class Main { public static void main(String[] args) { try{ System.out.println("请输入Java类的名称"); Scanner scanner = new Scanner(System.in); String className = scanner.next(); Class c = Class.forName(className); Method[] declaredMethods = c.getDeclaredMethods(); System.out.println("类" + className + "的方法包括:"); for (int i = 0; i < declaredMethods.length; i++) { System.out.println(declaredMethods[i].toString()); } } catch (ClassNotFoundException e) { e.printStackTrace(); System.out.println(e); } }}
在控制台输入:
请输入Java类的名称java.util.Scanner
查询结果
使用反射的时候遵循的3个步骤:
(1)获得想要操作的类的 java.lang.Class对象。常见的方式为:
(2)调用上述的getDeclaredMethods()等方法,获得该类中定义的所有的成员方法或调用上述的getDeclaredFields()等方法,获得该类中定义的所有的成员变量。
(3)使用 reflection API 进一步获取相关信息。
Class c = Class.forName("java.lang.String");Method m[] = c.getDeclaredMethods();System.out.println(m[0].toString());
将以文本方式打印出String 中定义的第一个方法的原型。
转载地址:http://mbqzi.baihongyu.com/