已有258人关注
关于“反射”的两个问题
发表在Java答疑区 2017-02-21
是否精华
版块置顶:

在《入门精通》第四版P293-P294的那个例子中

1,在用getDeclaredConstructors()方法 获取构造方法时 按声明顺序返回时 这个顺序是否与开始创建类的对象(即Example_01的对象)反用的构造方法有关 如例子中 用是的第三个构造方法创建对象 是否在返回数组中时 第三个构造方法的索引为0 之后向上增加 即第二个构造方法为1 第一个为2


2,在遍历构造方法时 在下面有一段if else if..语句中第三个条件要先把参数放为String数组对象 再放用Object[]中才放进newInstance中 而不能像上面那样直接把参数入进newInstance中,而且出现死循环,这与它是个可变数量参数有关吗 是不是所有可变数量参数的构造方法都必须这样?

2017-02-21 23:23:01编辑
分享到:
精彩评论 1
根号申
学分:4736 LV12
TA的每日心情
2021-07-16 23:48:46
2017-02-22
沙发

Constructor类的newInstance(Object... initargs)方法参数是一个不定长参数,这个不定长参数表示被反射构造方法可能用到的参数个数,它是用Object定义的。程序里面被反射第三个构造方法的参数也是不定长的,可以把这个构造方法参数以数组的形式传入,但如果直接向newInstance(Object... initargs)方法传入数组,方法分不清传进来数组是用来区分构造参数类型?还是构造方法初始化的数值?这种情况就要用Object数组给参数封装一下,首先告诉newInstance(Object... initargs)方法我们要传入N个参数了,N就是Object数组长度,只不过它的值是1,然后将数组里面这唯一一个元素取出来,newInstance()一看就明白了,这个参数的类型是String[],就是一个字符串数组,然后newInstance()就会寻找参数类型是字符串数组的构造方法并进行初始化。

首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照