java反射 反射构造函数 报 wrong number of arguments 错误
来源:互联网 发布:薛进文 饶子和 知乎 编辑:程序博客网 时间:2024/06/06 01:13
今天学习reflect时,按照网上的讲解做的例子,但是写完运行后报 wrong number of arguments
代码如下
public class ReflectCase2 {public static void main(String[] args) {//通过Class调用其他类的构造函数Class<?> clas2 = null;try {clas2 = Class.forName("com.wgw.java.reflect.test.Person");} catch (ClassNotFoundException e) {e.printStackTrace();}Person per1 = null;Person per2 = null;Person per3 = null;Person per4 = null;Constructor<?> con[] = clas2.getConstructors();try {per1 = (Person) con[0].newInstance();//从此处开始报错,就是参数的个数不对per2 = (Person) con[1].newInstance("wgw2");per3 = (Person) con[2].newInstance(30);per4 = (Person) con[3].newInstance("wgw3",40);} catch (Exception e) {e.printStackTrace();}System.out.println(per1);System.out.println(per2);System.out.println(per3);System.out.println(per4);}}class Person{private String name;private int age;public Person(){}public Person(String name){this.name = name;}public Person(int age){this.age = age;}public Person(String name,int age){this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String toString(){return "["+this.name+","+this.getAge()+"]";}}错误信息:
java.lang.IllegalArgumentException: wrong number of argumentsat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)at java.lang.reflect.Constructor.newInstance(Constructor.java:513)at com.wgw.java.reflect.test.ReflectCase2.main(ReflectCase2.java:54)
原来通过clas2.getConstructors(); 获取的构造函数,不是按照顺序获取的,可以通过con[0].getParameterTypes()[1] 查看获取的构造函数是什么样的参数,从而确定是哪个构造函数,
将
per1 = (Person) con[0].newInstance();//从此处开始报错,就是参数的个数不对per2 = (Person) con[1].newInstance("wgw2");per3 = (Person) con[2].newInstance(30);per4 = (Person) con[3].newInstance("wgw3",40);
修改为
per1 = (Person) con[3].newInstance(); per2 = (Person) con[2].newInstance("wgw3",40); per3 = (Person) con[1].newInstance(30); per4 = (Person) con[0].newInstance("wgw2");
就可以正常运行,输出信息如下:
[null,0][wgw3,40][null,30][wgw2,0]
0 0
- java反射 反射构造函数 报 wrong number of arguments 错误
- Java 反射机制 反射数组 wrong number of arguments 异常
- 解析Java反射java.lang.IllegalArgumentException: wrong number of arguments
- java反射 java.lang.IllegalArgumentException: wrong number of arguments
- Java反射异常:java.lang.IllegalArgumentException: wrong number of arguments
- java反射调用String[] wrong number of arguments异常解决
- 反射异常:java.lang.IllegalArgumentException: wrong number of arguments
- 原创:Java反射中java.lang.IllegalArgumentException: wrong number of arguments异常
- wrong number of arguments
- java.lang.IllegalArgumentException: wrong number of arguments
- java.lang.IllegalArgumentException: wrong number of arguments
- django运行错误:wrong number of arguments for 'set' command
- JBOSS 7.1.1 在jdk 1.7u3以上版本,jsp报java.lang.IllegalArgumentException wrong number of arguments
- wrong number of arguments (1 for 2)
- java.lang.IllegalArgumentException: Wrong number of arguments; expected 0, got 1
- newInstance传入String 数组 提示Wrong number of arguments
- ERR wrong number of arguments for 'sadd' command
- JAVA反射系列之 构造函数,方法,属性反射详解
- centos6.x服务解释
- c#控件
- 鼠标滑动到当前页面触发动画效果
- 配置Eclipse支持java和xml文件的代码补全功能
- android 代码片段,实现60秒倒计时
- java反射 反射构造函数 报 wrong number of arguments 错误
- asp.net 返回上一页的实现方法小集
- mongodb mysql对比
- 《学习OpenCV》第三章课后题3
- Sublime下安装package control
- 发现一个很好的mac和android手机文件互传的工具
- android xml 资源文件中几个格式(@ ? @* @+)的含义
- Eclipse Java注释模板设置详解
- 本机php环境搭建教程:windows环境下wampserver的配置教程——超级详细