Constructor<?> cons[]=demo.getConstructors();在JDK1.7报错,在JDK1.6可以运行
百度了一下,发现这篇文章,java反射中构造函数的问题
http://bbs.csdn.net/topics/390183924
package Reflect; import java.lang.reflect.Constructor; class Person{ public Person() { } public Person(String name){ this.name=name; } public Person(int age){ this.age=age; } public Person(String name, int age) { this.age=age; this.name=name; } public String getName() { return name; } public int getAge() { return age; } @Override public String toString(){ return "["+this.name+" "+this.age+"]"; } private String name; private int age; } class Hello{ public static void main(String[] args) { Class<?> demo=null; try{ demo=Class.forName("Reflect.Person"); }catch (Exception e) { e.printStackTrace(); } Person per1=null; Person per2=null; Person per3=null; Person per4=null; //取得全部的构造函数 Constructor<?> cons[]=demo.getConstructors(); try{ per1=(Person)cons[0].newInstance(); per2=(Person)cons[1].newInstance("Rollen"); per3=(Person)cons[2].newInstance(20); per4=(Person)cons[3].newInstance("Rollen",20); }catch(Exception e){ e.printStackTrace(); } System.out.println(per1); System.out.println(per2); System.out.println(per3); System.out.println(per4); } }
这段程序在JDK1.7运行出错,
null
null
null
null
java.lang.IllegalArgumentException: wrong number of arguments
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at Reflect.hello.main(hello.java:49)
JDK1.6可以运行.
上述帖子给出方法
可以修改为
class Hello{ public static void main(String[] args) { Class<?> demo = null; try { demo = Class.forName("Reflect.Person"); Constructor cons0 = demo.getConstructor(); Constructor cons1 = demo.getConstructor(String.class); Constructor cons2 = demo.getConstructor(int.class); Constructor cons3 = demo.getConstructor(String.class,int.class); Person per1 = (Person) cons0.newInstance(); Person per2 = (Person) cons1.newInstance("Rollen"); Person per3 = (Person) cons2.newInstance(20); Person per4 = (Person) cons3.newInstance("Rollen", 20); System.out.println(per1); System.out.println(per2); System.out.println(per3); System.out.println(per4); } catch (Exception e) { e.printStackTrace(); } } }
问题解决.
相关推荐
i < constructor.length; i++) { System.out.println("构造方法:"+constructor[i]); } //方法二 for (int i = 0; i < constructor.length; i++) { Class<?> p[]=constructor[i].getParameterTypes(); ...
The Scheme<br>Programming Language<br><br>... Multitasking with Engines <br><br>Bibliography<br><br>Answers to Selected Exercises<br><br>Formal Syntax of Scheme<br><br>Summary of Forms<br><br>Index<br>
mysql://localhost/sample"/> <br><property name="JDBC.Username" ="user"/> <br><property name="JDBC.Password" ="mypass"/> <br><property name=<br>value="10"/> <br><property name=value="5"/> <br><property...
<br> LContext.CreateClass<test>()<br> .Constructor()<br> .Constructor<test2*>("test_ptr")<br> .Constructor<int>()<br> .Constructor<const char*>("test_str")<br> .Constructor<int,int>()<br> ...
目录<br><br>前言<br>1. 翻译说明<br>1. 在Tomcat中快速上手<br>1.1. 开始Hibernate之旅<br>1.2. 第一个可持久化类<br>1.3. 映射cat<br>1.4. 与猫同乐<br>1.5. 结语<br>2. 体系结构<br>2.1. 总览<br>2.2. JMX集成<br...
目录<br><br>前言<br>1. 翻译说明<br>1. 在Tomcat中快速上手<br>1.1. 开始Hibernate之旅<br>1.2. 第一个可持久化类<br>1.3. 映射cat<br>1.4. 与猫同乐<br>1.5. 结语<br>2. 体系结构<br>2.1. 总览<br>2.2. JMX集成<br...
<summary>Accessor constructor.</summary> <param name="i">The index for an entry within an Accessable object.</param> </member> - <member name="F:Symbol.Marshaller.Accessor.m_i"> <summary>An ...
<constructor-arg type="java.lang.String"> <value>jxg/Qr4VbxU=</value> </constructor-arg> <!-- password --> <constructor-arg type="java.lang.String"> <value>jxg/Qr4VbxU=</value> </...
声明的所有构造函数的Constructor对象的数组}//Constructor<T> getConstructor(Class<?>... parameter
>>> cx.bind_class(Foo, bind_constructor=True) >>> cx.eval_script("var f = new Foo(); f.hello();") Hello, Javascript world! >>> f = cx.eval_script("f;") >>> f.hello() Hello, Javascript ...
Tricks of the Windows video Game Programming<br><br>PART I Windows Programming Foundations 7<br>1 Journey into the Abyss 9<br>A Little History.............................................................
//通过构造方法对象去用构造方法创建对象 => 相当于new 一个对象 Object instance = constructor.newInstance(Object 实参);//可以创建任意访问权限的有参或者无参构造 普通方法 Method[] ...
<!... ... <head> <meta charset="utf-8"> <title>2019新年倒计时</title> ... if (x <= 0) clearInterval(x); }, 1000); const getTrueNumber = x => (x < 10 ? "0" + x : x); </script> <div style="text-ali
1, .NET中类和结构的区别?<br>2, 死锁的必要条件?怎么克服?<br>3, 接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体...<br>4, 构造器Constructor是否可以被继承?是否可以被Override?<br>......
<input type=text onkeypress="return event.keyCode>=48&&event.keyCode<=57||(this.value.indexOf(".")<0?event.keyCode==46:false)" onpaste="return !clipboardData.getData("text").match(/D/)" ondragenter=...
在<build> 标签内加入即可,如果还是不能解决,那么请你加群(改名后)说明你的问题,有人会回答你。 5.Tomcat7以上在访问JSP页面的时候,提示JSTL错误。 这个错误是因为Tomcat7 中没有 JSTL 的jar包,现在已经在...
return e},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}}))})(jQuery);/*! * jQuery UI Widget 1.8.18 * * Copyright ...
Constructor cons1 = userServiceClass.getConstructor(UserDao.class); Object userService = cons1.newInstance(userDao); WebUtils.setUserService(config.getServletContext(), userService); ...
= "1.0.1.7") throw new IncompatibleException(); string username = ServerImpl.Instance.GetUserName(context); if (string.IsNullOrEmpty(username)) throw new UnauthorizedException(); AccountState ...