java 关于反射

先列出代码,再具体分析
code

Class cc=this.getClass();
Method meth= cc.getDeclaredMethod(methodName, Map.class);
Map<String, String> result = (Map<String, String>) meth.invoke(this, parameterMap);

过程分析
1、获取class的三种方式

  • Class c1= Class.forName("com.pang.demo.A");
  • A a = new A(); Class c2 = a.getClass();
  • Class c3= A.class();//在同一个类中也可以通过this.getClass()获取

第一种方法是通过类名获取,第二种是通过对象获取。需要注意的是,第一种方法中类名必须是完整的包括包名。
2、获取class中的方法,获取class的方法有两种方式:getDeclaredMethodgetMethod

  • getDeclaredMethod
    获取当前类和父类的所有声明的方法,包括public、protected和private修饰的方法,需要注意的是,这些方法一定是在当前类中声明的,从父类中继承的不算,实现接口的方法由于有声明所以包括在内。

  • getMethod 获取当前类和父类的所有public
    的方法,这里的父类指的是继承层次中的所有父类,比如所A继承B,B继承C,那么B和C都属于A的父类。获取当前类和父类的所有public的方法。

    如果是调用有参的方法则为getDeclaredMethod(methodName,Map.class)
    methodName表示调用的方法名,String是入参类型(无论哪种类型的入参,都是参数类型.class),传入这两个参数之后,便可以根据方法名和方法参数通过反射获取带有参数的方法
    3、通过调用invoke()执行方法,根据传入的对象实例,通过配置的实参参数来调用方法

扩展知识
反射的定义
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值