ImageVerifierCode 换一换
格式:DOC , 页数:4 ,大小:37.50KB ,
资源ID:7232055      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-7232055.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java反射参数传递.doc)为本站会员(jmydc)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

Java反射参数传递.doc

1、JAVA反射参数传递概略 2009-11-30 15:57:23| 分类: Java 程序|字号 订阅使用 Method 反射调用函数时,我们通常会遇到以下几种情况:public void test()System.out.println(函数参数:0);public void test(String str)System.out.println(“函数参数:1-“ + str);public void test(String str1, String str2)System.out.println(“函数参数:2-“ + str1 +“ “ + str2);public void test(

2、Object.objs)System.out.print(“函数参数:“ + objs.length + “-“);for(Object o : objs )System.out.print(o.toString() + “ “);而当我们使用 Class.getMethod,则需要传递所调用函数的参数类型。查看Class.getMethod 的 API 可知,需要传递的类型被表示为一个可变参数。我们知道,传递可变参数时,非序列参数会被编译成编列,即变成一个 Object类型的数组,但是本身为序列的则会直接被转型 Object数组。那么,前三种情况按照要求传递,则传递给 getMethod 的

3、参数会被转变为一个一维的参数列表的 Object 数组。第四种情况,其函数本身便要求传递一个可变参数,即一个Object类型的参数。如果我们按照正常方法传递,则此 Object类型的参数会被直接转型使用,而我们最终传给函数的应该是一个二维的 Ojbect 数组,即 Object类型。getMethod 方法的匹配过程是指寻找参数长度与 Object 数组的长度相等,且每个参数类型与 Object 数组每个数组项相同的方法。所以,再这种情况下,我们应当对每四种情况下将要传递的参数进行一次包装,将其包装成一个二维的 Object 数组。方法如下:Object obj = new Object1;S

4、tring strs = new String“xiao“,“she“, “qing“;obj0 = strs ;此时的 obj 则是我们将要传给 Class.getMethod 的参数,而 strs 则是我们要传递给调用函数 test(Object.objs)的参数。这里的 obj 长度为是因为可变参数在没有参数传递之前的检查时的长度为,被视为一元参数。由于 Spring 使用的是 Java 代理,所以,在 Spring 中会经常遇到类似的问题。具体代码如下:package test;import java.lang.reflect.InvocationTargetException;imp

5、ort java.lang.reflect.Method;public class MethodDemo public void test()System.out.println(“函数参数: 0“);public void test(String str)System.out.println(“函数参数: 1-“ + str);public void test(String str1, String str2)System.out.println(“函数参数: 2-“ + str1 + “ “ + str2);public void test(Object.objs)System.out.p

6、rint(“函数参数: “ + objs.length + “-“);for(Object o : objs )System.out.print(o.toString() + “ “);/* param args*/* param args*/public static void main(String args) /testMethod();printMethodType();public static void printMethodType()Method methods = MethodDemo.class.getMethods();Class cs;for(Method m : me

7、thods)System.out.println(“-“ + m.getName() + “-“);cs = m.getParameterTypes();System.out.println(cs.length);for(Class c : cs)System.out.println(c.toString();public static void testMethod()MethodDemo demo = new MethodDemo();Method method;try method = MethodDemo.class.getMethod(“test“, null);method.inv

8、oke(demo, null);System.out.println(“-“);String content = “xiao“;method = MethodDemo.class.getMethod(“test“, String.class);method.invoke(demo, content);System.out.println(“-“);String str1 = “xiao“;String str2 = “qing“;method = MethodDemo.class.getMethod(“test“, String.class, String.class);method.invo

9、ke(demo, str1, str2);System.out.println(“-“);Object obj = new Object1;obj0 = new String“xiao“, “she“, “qing“;/obj1 = new String“xiao“, “qing“;method = MethodDemo.class.getMethod(“test“, Object.class);method.invoke(demo, obj); catch (SecurityException e) / TODO Auto-generated catch blocke.printStackT

10、race(); catch (NoSuchMethodException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IllegalArgumentException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IllegalAccessException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (InvocationTargetException e) / TODO Auto-generated catch blocke.printStackTrace();

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报