java 反射执行方法
Java射是Java言中比较重要的技术,可以帮助开发人员在不了解具体类型的情况下,对对象进行操作。本文将重点讲解 Java射执行方法的常用方法。
一、Java射的概念
反射(Reflection),是指程序可以访问、检测和修改它本身状态或行为的一种能力。它有助于完成自省(introspection),自描述(introspection)和自配置(configuration)的许多任务。在 Java 中,反射是指在运行时,分析和使用类、接口、字段、方法等等的能力。
反射机制是 Java言中一种强有力的工具,它允许程序在运行时,可以运行任意对象,调用任意方法,判断任意类型,构造任意类型实例,在程序中可以实现动态加载和动态链接的功能。
二、Java射执行方法
Java射支持执行类中的方法,执行这些方法前需要获取 Method象,方法可以通过 Method象执行。下面我们将介绍Java射执行方法常用的方法:
1. 使用 DeclaredMethods()法获取类中所有方法,然后再根据需要调用方法;
2. 使用 Method()法获取指定方法;
3. 使用 DeclaredMethod()法获取类中指定方法;
4. 使用 Constructor()法获取构造器,再调用 newInstance()法;
5. 使用 Class.forName()法动态加载类,再调用 newInstance()法;
6. 使用 wInstance()法创建类的实例,再调用实例的方法。
三、Java射执行方法的实例
下面我们给出Tast类的定义:
public class Test {
public void sayHello() {
System.out.println(Hello!);java反射的作用及应用场景
}
public void sayBye() {
System.out.println(Bye!);
}
}
1. 使用 DeclaredMethods()法获取类中所有方法,然后再根据需要调用方法:
//取Test类
Class clazz = Class.forName(Test
//取Test类中所有方法
Method[] methods = DeclaredMethods();
//历方法
for (Method method : methods){
//印方法名
System.out.Name());
//取方法名
String methodName = Name();
//据需要执行方法
if(sayHelloequals(methodName)){
//用sayHello()方法
method.wInstance());
}
if(sayByeequals(methodName)){
//用sayBye()方法
method.wInstance());
}
}
2. 使用 Method()法获取指定方法:
//取Test类
Class clazz = Class.forName(Test
// 使用类加载器加载Test类
ClassLoader loader = ClassLoader();
//取sayHello()方法
Method method = Method(sayHello loader);
//行sayHello()方法
method.wInstance());
3. 使用 DeclaredMethod()法获取类中指定方法:
//取Test类
Class clazz = Class.forName(Test
//取sayBye()方法
Method method = DeclaredMethod(sayBye
//行sayBye()方法
method.wInstance());
4. 使用 Constructor()法获取构造器,再调用 newInstance()法:
//取Test类
Class clazz = Class.forName(Test
//取Test类的构造函数
Constructor constructor = Constructor();
//过构造函数实例化对象
Object obj = wInstance();
//用sayHello()方法
Method method = DeclaredMethod(sayHello
//行sayHello()方法
method.invoke(obj);
5. 使用 Class.forName()法动态加载类,再调用 newInstance()法:
//过Class.forName()方法动态加载Test类
Class clazz = Class.forName(Test
//过newInstance()获取Test类实例对象
Object obj = wInstance();
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论