反射——操作方法

本篇博客介绍的是 通过反射操作方法:
我们先创建一个vo类:

public class Student{
	public void eat(String name){
		System.out.println(name+"正在吃...");
	}
	private void eat(){
		System.out.println("正在吃饭...");
	}
}

接着我们写一个测试类Test来通过反射实现操作方法

public class Test{
	public static void main(String[] args){
		Class clazz = Student.class;
 		try{
 			//获取方法
 			//通过方法名与参数列表 获取public方法
 			Method method = clazz.getMethod("eat", String.class);
 			//可以获取继承来的方法
   			method = clazz.getMethod("toString");
   			//获取 全部访问级别 的方法
   			method = clazz.getDeclaredMethod("eat");
			//获取 public访问级别 的所有方法
   			Method[] methods = clazz.getMethods();
   			//获取 全部访问级别 的所有方法,不包含继承的方法
   			methods = clazz.getDeclaredMethods();

			//查看方法:
			//先获取这个方法
			method = clazz.getMethod("eat", String.class);
			//查看该方法所属的类
			clazz = method.getDeclaringClass();
   			System.out.println(clazz);
   			//查看该方法的访问权限
   			int mod = method.getModifiers();
  		 	String result = Modifier.toString(mod);
   			System.out.println(result);
   			//查看该方法的返回值类型,这里返回值类型的类为Class类型
   			clazz = method.getReturnType();//返回值类型
   			System.out.println(clazz);
   			//查看方法名
   			method.getName();
   			//查看该方法的参数列表类型
   			clazz = method.getParameterTypes();
   			System.out.println(clazz);
   			
   			//调用方法:
   			Constructor constructor = clazz.getConstructor();
   			Object obj = constructor.newInstance();//通过反射调用构造方法,创建对象
   			obj = method.invoke(obj, "Tom");//调用,前面传调用该方法的对象,后面传参数(反射中方法不区分静态非静态,全当非静态),该方法返回值为调用方法返回值
   			System.out.println(obj);
 		} catch (Exception e) {
			e.printStackTrace();
    		}
 
		
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值