Java getMethod与invoke的使用
1、forName 方法
forName是一个静态方法,其作用:通过调用来获取类名对应的Class对象,同时将Class对象加载进来。
如果将类名保存在字符串(如xml)中,就可以在程序运行时,动态调用加载。
注意:只有调用的参数是类名或者方法时,才可用。
2、newInstance()方法
作用:将对象实例化。返回类型为Object。与new的区别在于,new可以带参,而newInstance()不可以,一边初始化无参类。通常与forName()配合使用。
String str = "java.util.Date";
Class cl1= Class.forName(str);//加载java.util.Date类
Object obj = cl1.newInstance();//实例化cl1
3、getMethod()方法
getMethod方法与getField方法类似,getField方法根据表示域名的字符串,返回一个Field对象。而getMethod方法则根据方法名称和相关参数,来定位需要查找的Method对象并返回。
getMethod与getDeclareMethods方法的区别在于,后者返回一个Method对象数组,需要自己在结果中查找所需Method对象。
原型: Method getMethod(String name,Class...parameterTypes)
参数解释:name: method的名称
parameterTypes:method的参数类型的列表(参数顺序需按声明method时的参数列表排列)
返回:符合method名称和参数的method对象
抛出错误:NoSuchMethodException
原因:没有找到所要查询的Method对象 或 Method名称为“<init>”或“<clinit>”
NullPointerException
原因:所要查询的Method对象的名称为null
SecurityException
原因:调用的类或其父类没有调用权限
例:
Method m1 = Employee.class.getMethod("getName");
Method m2 = Employee.class.getMethod("raiseSalary",double.class);
上面例子分别获得了Employee类的getName方法和raiseSalary方法的 方法指针m1,m2。
4、invoke方法
作用:调用包装在当前Method对象中的方法。
原型:Object invoke(Object obj,Object...args)
参数解释:obj:实例化后的对象
args:用于方法调用的参数
返回:根据obj和args调用的方法的返回值
抛出错误:IllegalAccessException
原因:Method对象强制Java语言执行控制 或 无权访问obj对象
IllegalArgumentException
原因:方法是实例化方法,而指定需要调用的对象并不是实例化后的类或接口
例:
Class l = Class.forName("test1.A"); Object obj1 = l.newInstance(); Object[] obj2 = new Object[1];obj2[0] = new String("hello world"); Method m = l.getMethod("a1",new Class[] { String.class });Object obj3 = m.invoke(obj1, obj2);
Java getMethod与invoke的使用相关推荐
- java中的invoke方法_详解Java中Method的Invoke方法
在写代码的时候,发现从父类class通过getDeclaredMethod获取的Method可以调用子类的对象,而子类改写了这个方法,从子类class通过getDeclaredMethod也能获取到M ...
- Java动态代理invoke方法自动执行的原因
Java动态代理invoke方法自动执行的原因 在动态代理中,一般的是先调用Proxy.newProxyInstance()生成代理对象,然后通过调用代理对象的对应方法来实现增强,这里假设代理了被代理 ...
- java getxxx_java的invoke与getMethod方法用法
和listener一起使用举例: 需要在控件中监听某个动作:比如button点击,画面滚动等 1.为控件定义一个属性:属性绑定一个方法 xxxProperty ="onPropertyXxx ...
- java反射 getMethod_JAVA 反射 getMethod() 和 invoke() 具体应用
最近有一个有很多输入框的JSP页面,在页面上 input name 都是有规律的命名,在提交到后台时,通过JAVA反射机制可以减少不少代码量,特此记录一下实现! JSP页面大概如下: 全程陪诊后续价格 ...
- java反射getmethod用法_Java反射之 getMethod() 与invoke的使用
1.forName 方法 forName是一个静态方法,其作用:通过调用来获取类名对应的Class对象,同时将Class对象加载进来. 如果将类名保存在字符串(如xml)中,就可以在程序运行时,动态调 ...
- java getmethod类_Java getMethod类型参数
public class DynamicInvoker { public static void main(String[] args) { // TODO Auto-generated method ...
- java getmethod 无参数_Java getMethod类型参数
public class DynamicInvoker { public static void main(String[] args) { // TODO Auto-generated method ...
- java getmethod int_Method getMethod
Method getMethod(String name, Class>... parameterTypes) --返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定 ...
- java getmethod 使用_java – 使用子类作为方法参数调用getMethod
是否可以调用一个方法,其中参数对象或参数类是一个子类,并且该方法本身将超类作为参数? 我试图调用这个方法public void setNewProblem(Problem problem);具体实现了 ...
最新文章
- Idea Debug调试介绍
- 卷积神经网络迁移学习
- [收藏]61条面向对象设计的经验原则
- 【微机原理与接口技术】具体芯片(1)并行接口8255A(1):全局观
- DebugOutputString 使用
- Vue 计算属性与侦听器
- 【AI视野·今日NLP 自然语言处理论文速览 第二十四期】Thu, 30 Sep 2021
- Linux:rsync error: remote command not found (code 127) at io.c(226) [sender=3.1.2
- c语言分治法求众数重数_分治法求众数 - osc_twlari2q的个人空间 - OSCHINA - 中文开源技术交流社区...
- 限速访问文件服务器,利用nginx实现文档服务器限速
- notion自建服务器,最详细的NOTION功能模块列表
- metaspolit教程
- 在Windos上安装Nginx
- ngrok转发mysql连接_使用小米球 -Ngrok 实现内网转发
- Python解答蓝桥杯省赛真题之从入门到真题
- 区块链“搅局”中介风云
- IT名企面试:微软笔试题
- seo与sem的区别与联系(大全篇)
- Herman miller Aeron 一代 气压杆(气压棒,气柱)更换笔记(电脑椅中的劳斯莱斯)
- 敏捷项目的史诗与迭代