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

更多文章:


三星gtn7100开不了机(三星note2 7100 不能开机)

三星gtn7100开不了机(三星note2 7100 不能开机)

本文目录三星note2 7100 不能开机三星7100不能开机手机突然 卡住 黑屏开不了机 GTN-7100三星7100为什么突然开不了机呢三星GTN7100卡在samsung无法开机三星7100手机开不了机怎么办三星7100为什么突然开开

2023年6月18日 01:50

am3cpu有哪些型号(am3 cpu有哪些型号)

am3cpu有哪些型号(am3 cpu有哪些型号)

本文目录am3 cpu有哪些型号am3 cpu 都有哪些型号am3 cpu有哪些型号AM3的话,是938阵脚的CPU。PhenomII*6 1035T/1045T/1055T/1605T/1075T1090T/1100TPhenomII*4

2023年10月20日 22:15

华为d20082是什么型号(我想问一下华为dub一al20是什么型号)

华为d20082是什么型号(我想问一下华为dub一al20是什么型号)

本文目录我想问一下华为dub一al20是什么型号华为d20082怎么样华为手机d20082发热是怎么回事我的是华为D2-0082的手机,已经用了431天,现在开始电池发热,刚用几分钟就热的不行,而且电量华为dvc-an20是什么型号华为手机

2023年11月14日 04:40

华为麦芒系列手机怎么样(麦芒手机怎么样)

华为麦芒系列手机怎么样(麦芒手机怎么样)

本文目录麦芒手机怎么样华为麦芒6好用吗华为麦芒手机怎么样华为麦芒9手机怎么样华为麦芒系列手机怎么样麦芒手机怎么样华为麦芒8不错的,以下是手机参数:1.屏幕:屏幕尺寸6.21英寸,屏幕色彩1670万色,分辨率:FHD+ 1080x2340 像

2024年7月12日 06:10

迪比特智能手机(手机存储卡分那些种类,各自有什么区别和联系)

迪比特智能手机(手机存储卡分那些种类,各自有什么区别和联系)

大家好,迪比特智能手机相信很多的网友都不是很明白,包括手机存储卡分那些种类,各自有什么区别和联系也是一样,不过没有关系,接下来就来为大家分享关于迪比特智能手机和手机存储卡分那些种类,各自有什么区别和联系的一些知识点,大家可以关注收藏,免得下

2024年6月7日 01:50

荣耀play4t pro 鸿蒙(鸿蒙来啦!快来看看有没有你的手机)

荣耀play4t pro 鸿蒙(鸿蒙来啦!快来看看有没有你的手机)

各位老铁们,大家好,今天由我来为大家分享荣耀play4t pro 鸿蒙,以及鸿蒙来啦!快来看看有没有你的手机的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2024年9月20日 22:25

高画质卡片机(求行家推荐卡片机、要求画质高一点、光圈大传感好点(不需要长焦)、拍人像多一点、预算不多1500左右)

高画质卡片机(求行家推荐卡片机、要求画质高一点、光圈大传感好点(不需要长焦)、拍人像多一点、预算不多1500左右)

各位老铁们,大家好,今天由我来为大家分享高画质卡片机,以及求行家推荐卡片机、要求画质高一点、光圈大传感好点(不需要长焦)、拍人像多一点、预算不多1500左右的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持

2024年11月2日 06:15

寻找手机功能(iqoo怎么开启查找手机功能)

寻找手机功能(iqoo怎么开启查找手机功能)

各位老铁们,大家好,今天由我来为大家分享寻找手机功能,以及iqoo怎么开启查找手机功能的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录iqoo怎么开

2024年8月20日 00:00

6210诺基亚(诺基亚6210s的怎么样)

6210诺基亚(诺基亚6210s的怎么样)

大家好,6210诺基亚相信很多的网友都不是很明白,包括诺基亚6210s的怎么样也是一样,不过没有关系,接下来就来为大家分享关于6210诺基亚和诺基亚6210s的怎么样的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目

2024年9月26日 02:50

u盘提示格式化(为什么U盘一插进电脑就提示让我格式化啊,我不想格式化的呀!)

u盘提示格式化(为什么U盘一插进电脑就提示让我格式化啊,我不想格式化的呀!)

本篇文章给大家谈谈u盘提示格式化,以及为什么U盘一插进电脑就提示让我格式化啊,我不想格式化的呀!对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文

2024年9月18日 08:50

买iphonexs的都是傻子(为什么有人说iphone XR是智商检测机呢)

买iphonexs的都是傻子(为什么有人说iphone XR是智商检测机呢)

本文目录为什么有人说iphone XR是智商检测机呢太后悔买了苹果iPhone XS Max,iPhone真心差,不如三星,太丢脸了,跟朋友三星比速度为什么有人说iphone XR是智商检测机呢为什么有人说iPhonexr是智商检测机,至于

2024年2月27日 16:10

哪款打印机耗材便宜(哪种打印机型号,打印成本低,耗材好配,速度快)

哪款打印机耗材便宜(哪种打印机型号,打印成本低,耗材好配,速度快)

本篇文章给大家谈谈哪款打印机耗材便宜,以及哪种打印机型号,打印成本低,耗材好配,速度快对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录哪种打印机型号,打印成本低,耗材好配,速度快我想知道什么打印机的耗材最便宜哪种打印机型号,打

2024年8月31日 20:05

9800gtx评测(9800GTX+和 8800U 你会选哪个哪个玩游戏更好呢)

9800gtx评测(9800GTX+和 8800U 你会选哪个哪个玩游戏更好呢)

本文目录9800GTX+和 8800U 你会选哪个哪个玩游戏更好呢索泰9800gtx性能如何9800GTX+和 8800U 你会选哪个哪个玩游戏更好呢我自然选8800Ultra,我有3卡Sli,那感觉不是9800GTX+能比的,但是发热确实

2024年4月30日 12:00

等离子电视报价(42寸等离子电视尺寸是多少价格呢进口货)

等离子电视报价(42寸等离子电视尺寸是多少价格呢进口货)

大家好,今天小编来为大家解答以下的问题,关于等离子电视报价,42寸等离子电视尺寸是多少价格呢进口货这个很多人还不知道,现在让我们一起来看看吧!本文目录42寸等离子电视尺寸是多少价格呢进口货长虹等离子电视pt50718x价格多少性能如何42寸

2024年6月18日 18:40

天极在线观看(那些网站可以看动漫)

天极在线观看(那些网站可以看动漫)

本文目录那些网站可以看动漫最新电影在线观看--墨攻,天行者,少林僵尸-天极尽在: ouou.com张晋的电影有哪些呢你认为最精彩的是哪一部那些网站可以看动漫土豆网http://www.tudou.com/优酷网http://www.you

2024年5月28日 23:50

近期文章

本站热文

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

热门搜索