`

java反射应用

阅读更多

   反射在java中有很大用处,下面举例说明下,在java中怎么通过完整路径获取对象,调用方法。

 

1、需要通过反射获取的类

package reflectionTset.com.reflection;

public class Reflection {
	/**
	 * 带参
	 * @param name
	 * @param sex
	 * @param age
	 * @return
	 */
	public String methodParameter(String name,String sex,int age){
		System.out.println("姓名:" + name + " 性别:" + sex + " 年龄:" + age); 
		
		return "有参方法操作成功";
	}
	
	
	/**
	 * 测试反射不带参方法
	 * @param name
	 * @param sex
	 * @param age
	 */
	public String methodNoParameter(){
		System.out.println("欢迎来到无参反射测试方法"); 
		
		return "无参方法操作成功";
	}
}

 

2、测试类

package reflectionTset.com.test;

import java.lang.reflect.Method;

/**
 * 放射测试类
 * @author Administrator
 *
 */
public class ReflectionTest {
	/**
	 * 测试反射带参方法
	 * @param name
	 * @param sex
	 * @param age
	 */
	public static void methodParameterTest(){
		try {
			//返回与带有给定字符串名的类或接口相关联的 Class 对象
 			Class c = Class.forName("reflectionTset.com.reflection.Reflection");
 			//创建该class表示的一个对象
 			Object obj = c.newInstance();
 			
 			//返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法
 			//获取一个方法对象,假设方法的参数是一个int,method名为setAge
 			Method sAge = c.getMethod("methodParameter", new Class[] {String.class,String.class,int.class});
 			//设置参数
 			Object[] arguments = new Object[] {"你妹","男",29};
 			
 			//执行方法
 			//对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。个别参数被自动解包,以便与基本形参相匹配,基本参数和引用参数都随需服从方法调用转换。 
 			Object backStr = sAge.invoke(obj, arguments);
 			
 			System.out.println("执行带参方法的返回值:" + backStr);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
	}
	
	
	/**
	 * 测试反射带参方法
	 * @param name
	 * @param sex
	 * @param age
	 */
	public static void methodNoParameterTest(){
		try {
			//返回与带有给定字符串名的类或接口相关联的 Class 对象
 			Class c = Class.forName("reflectionTset.com.reflection.Reflection");
 			//创建该class表示的一个对象
 			Object obj = c.newInstance();
 			
 			//返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法
 			//获取一个方法对象,假设方法的参数是一个int,method名为setAge
 			Method sAge = c.getMethod("methodNoParameter");
 			
 			//执行方法
 			//对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。个别参数被自动解包,以便与基本形参相匹配,基本参数和引用参数都随需服从方法调用转换。 
 			Object backStr = sAge.invoke(obj);
 			
 			System.out.println("执行无参方法的返回值:" + backStr);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
	}
	
	public static void main(String[] args) {
		//带参方法测试
		methodParameterTest();
		
		//无参方法测试
		methodNoParameterTest();
	}
}

 

分享到:
评论

相关推荐

    Java反射应用实例

    代码主要实现了Java反射应用实例, 包含利用反射方法创建对象(使用默认构造函数和自定义构造函数),访问对应对象的方法(包括带参数的和不带参数的),访问对应对象的域(Field). 从这里可以看到代码的详细解说:...

    java反射应用详细介绍.rar

    java反射应用详细介绍.rar

    Java反射技术的一般应用

    在向学生讲解Class.forName()方法的使用时,有时需要扩展讲解为什么这样书写的原理,于是,扩展讲解Java反射技术可以查看被监视类的方法(构造方法和普通方法)、公有属性的功能,以达到封闭功能的效果。该例子使用...

    JAVA 反射机制应用

    JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用

    java反射应用的原理以及应用

    这个文档讲述了反射的原理,以及class的各方面的应用举一反三,全面深入的讲述了反射的机制以及巧妙应用

    Java反射简单应用

    几个小demo,介绍了反射的几个api操作,最后写了一个简单的Java反射应用:工厂+反射+配置文件。

    java反射应用实例

    NULL 博文链接:https://dragonmandance.iteye.com/blog/2336911

    java反射机制应用

    java反射机制应用,文档中列举了使用java反射机制的各个应用场景,加以代码实例,使用学习非常方便。

    JAVA反射机制应用

    描述JAVA反射机制应用、举例。描述反射机制的具体实现及方法实现。

    JAVA反射机制及应用例子

    JAVA反射机制及应用例子.。。Reflection API

    java反射应用详细介绍

    本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的,要不然只看理论的话,看了也不懂,不过建议大家在看完文章之后,在回过头去看看理论,会有更好的理解。 下面开始正文。 【案例1】通过一个对象...

    java反射机制详解与应用

    java反射机制详解与应用

    Java反射学习和反射的应用场景干货都在这里

    文章目录一、Java反射定义二、Java反射机制实现1、Class对象获取2、获取class对象的摘要信息3、获取class对象的属性、方法、构造函数等三、反射的应用场景1、动态代理2、自定义注解实现日志管理 写在前面:Java反射...

    java的反射机制及其实际应用

    Java中,反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接。反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内部信息,而不是源...

    Java反射机制经典案例

    Java反射机制经典案例

    Java方法反射调用demo

    Java反射 调用空参方法 调用Object类型参数的方法 调用基本类型参数的方法 调用基本类型数组参数的方法 调用String数组参数的方法 调用Object数组参数的方法 调用私有方法

    java反射技术源码

    java反射技术应用的很广泛,多看源码,对理解java反射的理解会有很好的认识,这个源码有我自己的理解在里边

    Java反射性能测试分析

    对在Java环境下应用反射的性能,做了测试分析

Global site tag (gtag.js) - Google Analytics