method invoke(java Method invoke 参数问题)

2024-04-26 05:25:02 3

method invoke(java Method invoke 参数问题)

大家好,method invoke相信很多的网友都不是很明白,包括java Method invoke 参数问题也是一样,不过没有关系,接下来就来为大家分享关于method invoke和java Method invoke 参数问题的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

java Method invoke 参数问题

可以这样调用:method.invoke(object, new Object{obj1, obj2}});这样相当于object.method(obj1, obj2);请看下面的例子:import java.lang.reflect.Array;import java.lang.reflect.Method;public class Test{ public void print(String string) { System.out.println("print(String string)"); System.out.println(string); } public void print(String ... strings) { System.out.println("print(String ... string)"); for(String string: strings) System.out.println(string); } public static void main(String args) throws Exception { Test test = new Test(); // 调用 print(String string) Method method1 = test.getClass().getMethod("print", String.class); method1.invoke(test, "a"); // 调用 print(String ... strings) Method method2 = test.getClass().getMethod("print", Array.newInstance(String.class, 0).getClass()); method2.invoke(test, new String{"a", "b"}}); }}

java反射中method类中的invoke方法是做什么的,他有什么作用

  首先Method类代表一个方法,所以invoke(调用)就是调用Method类代表的方法。它可以让你实现动态调用,例如你可以动态的传人参数。下面是一个简单的例子。

public class MethodTest{    public static void main(String args)    {        String  names ={"tom","tim","allen","alice"};        Class《?》 clazz = Test.class;        try        {            Method method = clazz.getMethod("sayHi", String.class);            for(String name:names)                method.invoke(clazz.newInstance(),name);        } catch (NoSuchMethodException e)        {            e.printStackTrace();        } catch (IllegalAccessException e)        {            e.printStackTrace();        } catch (IllegalArgumentException e)        {            e.printStackTrace();        } catch (InvocationTargetException e)        {            e.printStackTrace();        } catch (InstantiationException e)        {            e.printStackTrace();        }    }}class Test{    public void sayHi(String name)    {        System.out.println("Hi "+name);    }}

使用 method.invoke(obj, args)时的参数问题

request肯定会传过来一个方法名,假定叫methodName,你的servlet类假定叫MyServlet,然后执行try { Method method = MyServlet.class.getDeclaredMethod(methodName,方法参数类型); Object value = method.invoke(new MyServlet(), 参数); } catch (SecurityException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } catch (IllegalAccessException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } catch (InvocationTargetException e) { // TODO 自动生成 catch 块 e.printStackTrace(); }你的参数最好用Integer类型,这样上面的参数类型改为Integer.class,参数改为你的参数id,参数如果是request传过来的先转换为整型调用哪个方法是你request传过来的方法名决定的比如你调用的方法为update(Integer id,String name){}那么request中传来的方法名为update,Method method =MyServlet.class.getDeclaredMethod(methodName,Integer.class,String.class); Object value = method.invoke(new MyServlet(), 1,"aaa");

为什么Interface反射获取的Method可以被invoke

首先Method类代表一个方法,所以invoke(调用)就是调用Method类代表的方法。它可以让你实现动态调用,例如你可以动态的传人参数。下面是一个简单的例子。123456789101112131415161718192021222324252627282930313233343536public class MethodTest{public static void main(String args){String names ={"tom","tim","allen","alice"};Class《?》 clazz = Test.class;try{Method method = clazz.getMethod("sayHi", String.class);for(String name:names)method.invoke(clazz.newInstance(),name);} catch (NoSuchMethodException e){e.printStackTrace();} catch (IllegalAccessException e){e.printStackTrace();} catch (IllegalArgumentException e){e.printStackTrace();} catch (InvocationTargetException e){e.printStackTrace();} catch (InstantiationException e){e.printStackTrace();}}}class Test{public void sayHi(String name){System.out.println("Hi "+name);}}

java Method invoke 抛出异常

InvocationTargetException异常由Method.invoke(obj, args...)方法抛出。当被调用的方法的内部抛出了异常而没有被捕获时,将由此异常接收。示例:package com.zzj.test.reflect; public class Reflect { public void run(int i) throws ZeroException { B b = new B(); b.run(i); } } class B { public void run(int i) throws ZeroException { if (i 《 0) { throw new ZeroException("参数不能小于零!"); } System.out.println("参数:" + i); } } class ZeroException extends Exception { private static final long serialVersionUID = 1L; private String detailMessage; public ZeroException(String detailMessage) { this.detailMessage = detailMessage; } public String getMessage() { return detailMessage; } } 测试:package com.zzj.test.reflect; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class Test { public static void main(String args) { try { Class《?》 clazz = Class.forName("com.zzj.test.reflect.Reflect"); Method method = clazz.getMethod("run", int.class); method.invoke(clazz.newInstance(), -1); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { System.out.println("此处接收被调用方法内部未被捕获的异常"); e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } } } 输出:此处接收被调用方法内部未被捕获的异常 java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.zzj.test.reflect.Test.main(Test.java:11) Caused by: com.zzj.test.reflect.ZeroException: 参数不能小于零! at com.zzj.test.reflect.B.run(Reflect.java:13) at com.zzj.test.reflect.Reflect.run(Reflect.java:6) ... 5 more 也可以直接打印目标异常:package com.zzj.test.reflect; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class Test { public static void main(String args) { try { Class《?》 clazz = Class.forName("com.zzj.test.reflect.Reflect"); Method method = clazz.getMethod("run", int.class); method.invoke(clazz.newInstance(), -1); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { System.out.println("此处接收被调用方法内部未被捕获的异常"); Throwable t = e.getTargetException();// 获取目标异常 t.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } } } 输出:此处接收被调用方法内部未被捕获的异常 com.zzj.test.reflect.ZeroException: 参数不能小于零! at com.zzj.test.reflect.B.run(Reflect.java:13) at com.zzj.test.reflect.Reflect.run(Reflect.java:6) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.zzj.test.reflect.Test.main(Test.java:11)

OK,关于method invoke和java Method invoke 参数问题的内容到此结束了,希望对大家有所帮助。

method invoke(java Method invoke 参数问题)

本文编辑:admin

更多文章:


联想a500手机壁纸461(我的也是联想A500 请问下 壁纸怎么弄啊 就是直接把全图设置成壁纸的那种)

联想a500手机壁纸461(我的也是联想A500 请问下 壁纸怎么弄啊 就是直接把全图设置成壁纸的那种)

本文目录我的也是联想A500 请问下 壁纸怎么弄啊 就是直接把全图设置成壁纸的那种联想A500锁定屏幕壁纸怎么设置联想A500的待机壁纸怎么自己设置啊联想A500手机,怎么把锁屏壁纸换掉联想a500锁屏壁纸能换吗 就是换自己的图片联想A50

2024年5月30日 15:15

魅族max2参数(魅族魅蓝手机怎么样)

魅族max2参数(魅族魅蓝手机怎么样)

各位老铁们好,相信很多人对魅族max2参数都不是特别的了解,因此呢,今天就来为大家分享下关于魅族max2参数以及魅族魅蓝手机怎么样的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录魅族魅蓝手机怎么样魅族e2和小米m

2024年8月14日 13:55

vivo申请解锁root官网(vivo手机root权限如何开启,教你简单方式)

vivo申请解锁root官网(vivo手机root权限如何开启,教你简单方式)

本文目录vivo手机root权限如何开启,教你简单方式vivo手机怎么在官网上申请BL,就是解BL锁vivo 解除ROOT的方法VIVO手机如何获取root权限vivo手机怎样获得root权限vivo手机root的权限如何开启vivo手机怎

2023年10月29日 01:00

摩托罗拉手机论坛(在摩托罗拉手机论坛怎样提问)

摩托罗拉手机论坛(在摩托罗拉手机论坛怎样提问)

本文目录在摩托罗拉手机论坛怎样提问摩托罗拉手机维修论坛摩托罗拉a1200e论坛摩托罗拉v3论坛摩托罗拉e8论坛谁能给一个讨论MOTO E398的论坛摩托罗拉e6论坛最好的摩托罗拉E6论坛(用手机上网)在摩托罗拉手机论坛怎样提问进入你手机的论

2024年7月18日 13:20

华为matebook e2019(华为matebooke2019能装哪种电话卡)

华为matebook e2019(华为matebooke2019能装哪种电话卡)

各位老铁们,大家好,今天由我来为大家分享华为matebook e2019,以及华为matebooke2019能装哪种电话卡的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下

2024年8月23日 17:55

s6edge绿色(三星s6edge LED灯未接来电以前是蓝色的,现在怎么突然变绿色闪烁了呢)

s6edge绿色(三星s6edge LED灯未接来电以前是蓝色的,现在怎么突然变绿色闪烁了呢)

本文目录三星s6edge LED灯未接来电以前是蓝色的,现在怎么突然变绿色闪烁了呢三星S6edge+ 有绿色么三星s6edge侧屏出现了绿色条纹,为什么三星S6edge绿色,卡槽是塑料的还是金属的,重量如何,侧面屏好用吗,用过的来,打酱油的

2024年7月25日 07:15

三星7572开不了机(三星手机GT-S7572无法正常开机怎么办)

三星7572开不了机(三星手机GT-S7572无法正常开机怎么办)

本文目录三星手机GT-S7572无法正常开机怎么办gt-s7572三星手机开不开机 咋办三星手机GT S7572 开不了机怎么办7572出现三星字母开不了机怎么办三星gts7572手机突然卡住,之后开不了机,屏幕为黑色,出现三星的Logo,

2023年11月2日 02:50

诺基亚e65电池(诺基亚E65怎么样详细点)

诺基亚e65电池(诺基亚E65怎么样详细点)

本文目录诺基亚E65怎么样详细点诺基亚E65电池冲满上网几分钟就提示电量已空!手机诺基亚E65突然开不了机,换新电池后还是开不了,该怎么办诺基亚E65电池为什么不耐用我的手机是诺基亚E65的滑板的电池是假的有没有什麽电池可以用啊不要原装的太

2023年7月24日 04:00

魅蓝6可以插内存卡吗(魅蓝note6能装内存卡吗)

魅蓝6可以插内存卡吗(魅蓝note6能装内存卡吗)

本文目录魅蓝note6能装内存卡吗魅蓝Note6能插SD内存卡吗魅蓝6t可以插内存卡吗魅蓝note6能装存储卡吗魅蓝note6支持外置储存卡吗魅蓝note6可以扩展内存吗魅蓝note6可以扩展内存么魅蓝note6能装内存卡吗魅蓝Note6能

2024年6月2日 15:09

诺基亚n82刷机包下载(诺基亚N82下载软件有哪些网址)

诺基亚n82刷机包下载(诺基亚N82下载软件有哪些网址)

本文目录诺基亚N82下载软件有哪些网址我的水货N82香港版的升级到了最新版本V30,但是全部是英文的怎么把它搞回中文啊,~~~~求救!!!诺基亚N82的操作系统可以升级吗求诺基亚N82刷机的详细过程诺基亚N82如何升级版本求诺基亚N82刷机

2024年6月29日 16:45

华为荣耀x4手机多少钱(华为荣耀4x这个手机在市场上售价是多少这个手机怎么样)

华为荣耀x4手机多少钱(华为荣耀4x这个手机在市场上售价是多少这个手机怎么样)

本文目录华为荣耀4x这个手机在市场上售价是多少这个手机怎么样华为荣耀Magic4多少钱华为荣耀x4手机多少钱华为荣耀x4多少钱华为x4真正多少钱是实介华为荣耀四手机多少钱华为荣耀4x多少钱,华为荣耀4x怎么样华为荣耀x4手机多少华为荣耀畅享

2024年7月15日 20:05

2020像素最高的手机(像素高的手机排行2020)

2020像素最高的手机(像素高的手机排行2020)

本文目录像素高的手机排行2020盘点2020年那些热门旗舰5G手机目前拍照水平最好的手机排名前五名有哪些:请问,万能的朋友圈什么牌子手机像素好照相效果好2020拍照最好的手机排行知乎2020年拍照最好的手机苹果像素最好的是哪款2020年最强

2023年6月5日 07:45

360手机管家苹果版(iOS10开始可以使用360手机管家拦截骚扰电话,有什么重大意义)

360手机管家苹果版(iOS10开始可以使用360手机管家拦截骚扰电话,有什么重大意义)

本文目录iOS10开始可以使用360手机管家拦截骚扰电话,有什么重大意义iphone用360手机管家和腾讯手机管家哪个好360软件管家手机必备苹果软件怎么下载到手机苹果版的360手机管家怎么样拦截广告吗360手机助手支持IPHONE吗iOS

2024年6月22日 18:05

为什么360手机无法root(360root为何会失败了)

为什么360手机无法root(360root为何会失败了)

“为什么360手机无法root”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看为什么360手机无法root(360root为何会失败了)!本文目录360root为何会失败了360一键root权限失败的原因有哪些360提示获取

2024年9月2日 09:40

oppo find耳机(oppofindx3原装耳机型号)

oppo find耳机(oppofindx3原装耳机型号)

本文目录oppofindx3原装耳机型号oppofindx3配哪款有线耳机音质好oppofind7原装耳机是什么牌子的OPPOfindx2Pro插上耳机没反应oppofindx3耳机oppofindx耳机插上没反应帮我查一下oppo fin

2023年5月31日 10:30

乐视电视售后服务电话(乐视有售后服务点么)

乐视电视售后服务电话(乐视有售后服务点么)

本文目录乐视有售后服务点么乐视2修复电池的号码乐视电视乐视售后服务怎么投诉 投诉电话是多少乐视电视售后电话是多少乐视电视维修服务的电话乐视有售后服务点么1、乐视TV严格按照国家三包规定执行: 整机保修一年(主板、电源板、智能板、除主要部件外

2024年7月22日 11:30

三星n148(三星N148笔记本电脑可以升级至4G内存吗)

三星n148(三星N148笔记本电脑可以升级至4G内存吗)

本篇文章给大家谈谈三星n148,以及三星N148笔记本电脑可以升级至4G内存吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录三星N148笔记本电脑可以升级至4G内存吗请问三星n148笔记本电脑哪年出产三星N148上网本如何连

2024年8月27日 09:05

努比亚z40pro和小米11ultra(华为mate40pro和小米11ultra哪个好)

努比亚z40pro和小米11ultra(华为mate40pro和小米11ultra哪个好)

本文目录华为mate40pro和小米11ultra哪个好努比亚z40pro和小米mix那个更好小米12s ultra评测对比努比亚z40pro小米11Ultra和华为Mate40Pro,买哪个好华为mate40pro和小米11ultra哪个

2024年6月28日 08:45

摩托罗拉edge 30发布(号称最薄5G手机!摩托罗拉Edge 30发布,仅有 6.79 mm薄)

摩托罗拉edge 30发布(号称最薄5G手机!摩托罗拉Edge 30发布,仅有 6.79 mm薄)

本文目录号称最薄5G手机!摩托罗拉Edge 30发布,仅有 6.79 mm薄联想Moto Edge 30官宣5月12日登陆印度,号称是全球最薄的5G手机motoedge30国内什么型号摩托罗拉edge s30下巴黑边大嘛摩托罗拉海报泄密:e

2023年4月29日 12:45

vivo游戏中心官方下载正版(OPPO手机如何下载vivo游戏中心)

vivo游戏中心官方下载正版(OPPO手机如何下载vivo游戏中心)

本文目录OPPO手机如何下载vivo游戏中心vivo游戏是不是正版vivo游戏中心下载安装官方最新版游戏中心下载安装vivo手机平板怎么下载vivo游戏中心怎么下载vivo游戏中心vivo手机游戏中心下载vivo游戏中心官方下载正版OPPO

2024年7月23日 18:09

近期文章

本站热文

电脑包尺寸对照表(电脑包要多大)
2024-07-23 11:15:58 浏览:3883
e10000(皖E10000是什么车)
2024-07-17 11:22:25 浏览:3506
ati radeon hd 5650(电脑的显卡是ATI Mobility Radeon HD 5650 (MADION PRO) ( 1 GB ) 这个显卡)
2024-07-07 05:01:37 浏览:3100
华为mate20pro版本区别(mate20pro有必要买ud版吗)
2024-07-24 08:26:42 浏览:2630
ipad买蜂窝版还是wifi版(ipad air 5买蜂窝好不好)
2024-07-17 14:35:19 浏览:2237
vivo y3配置参数(vivoy3参数是什么)
2024-07-16 07:07:06 浏览:2071
标签列表

热门搜索