欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java反射应用

程序员文章站 2022-05-28 19:12:52
...

   反射在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 反射