`

Constructor<?> cons[]=demo.getConstructors();在JDK1.7报错

阅读更多

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();
        }       
    }
}
 

 

问题解决.

分享到:
评论

相关推荐

    java反射例子

    i &lt; constructor.length; i++) { System.out.println("构造方法:"+constructor[i]); } //方法二 for (int i = 0; i &lt; constructor.length; i++) { Class&lt;?&gt; p[]=constructor[i].getParameterTypes(); ...

    The Scheme

    The Scheme&lt;br&gt;Programming Language&lt;br&gt;&lt;br&gt;... Multitasking with Engines &lt;br&gt;&lt;br&gt;Bibliography&lt;br&gt;&lt;br&gt;Answers to Selected Exercises&lt;br&gt;&lt;br&gt;Formal Syntax of Scheme&lt;br&gt;&lt;br&gt;Summary of Forms&lt;br&gt;&lt;br&gt;Index&lt;br&gt;

    ibatis 开发指南(pdf)

    mysql://localhost/sample"/&gt; &lt;br&gt;&lt;property name="JDBC.Username" ="user"/&gt; &lt;br&gt;&lt;property name="JDBC.Password" ="mypass"/&gt; &lt;br&gt;&lt;property name=&lt;br&gt;value="10"/&gt; &lt;br&gt;&lt;property name=value="5"/&gt; &lt;br&gt;&lt;property...

    LuaHelper绑定助手

    &lt;br&gt; LContext.CreateClass&lt;test&gt;()&lt;br&gt; .Constructor()&lt;br&gt; .Constructor&lt;test2*&gt;("test_ptr")&lt;br&gt; .Constructor&lt;int&gt;()&lt;br&gt; .Constructor&lt;const char*&gt;("test_str")&lt;br&gt; .Constructor&lt;int,int&gt;()&lt;br&gt; ...

    hibernate 教程

    目录&lt;br&gt;&lt;br&gt;前言&lt;br&gt;1. 翻译说明&lt;br&gt;1. 在Tomcat中快速上手&lt;br&gt;1.1. 开始Hibernate之旅&lt;br&gt;1.2. 第一个可持久化类&lt;br&gt;1.3. 映射cat&lt;br&gt;1.4. 与猫同乐&lt;br&gt;1.5. 结语&lt;br&gt;2. 体系结构&lt;br&gt;2.1. 总览&lt;br&gt;2.2. JMX集成&lt;br...

    hibernate

    目录&lt;br&gt;&lt;br&gt;前言&lt;br&gt;1. 翻译说明&lt;br&gt;1. 在Tomcat中快速上手&lt;br&gt;1.1. 开始Hibernate之旅&lt;br&gt;1.2. 第一个可持久化类&lt;br&gt;1.3. 映射cat&lt;br&gt;1.4. 与猫同乐&lt;br&gt;1.5. 结语&lt;br&gt;2. 体系结构&lt;br&gt;2.1. 总览&lt;br&gt;2.2. JMX集成&lt;br...

    NETCFSERUP

    &lt;summary&gt;Accessor constructor.&lt;/summary&gt; &lt;param name="i"&gt;The index for an entry within an Accessable object.&lt;/param&gt; &lt;/member&gt; - &lt;member name="F:Symbol.Marshaller.Accessor.m_i"&gt; &lt;summary&gt;An ...

    spring applicationContext 配置文件

    &lt;constructor-arg type="java.lang.String"&gt; &lt;value&gt;jxg/Qr4VbxU=&lt;/value&gt; &lt;/constructor-arg&gt; &lt;!-- password --&gt; &lt;constructor-arg type="java.lang.String"&gt; &lt;value&gt;jxg/Qr4VbxU=&lt;/value&gt; &lt;/...

    day15-类加载器&反射&模块化1

    声明的所有构造函数的Constructor对象的数组}//Constructor&lt;T&gt; getConstructor(Class&lt;?&gt;... parameter

    python-spidermonkey

    &gt;&gt;&gt; cx.bind_class(Foo, bind_constructor=True) &gt;&gt;&gt; cx.eval_script("var f = new Foo(); f.hello();") Hello, Javascript world! &gt;&gt;&gt; f = cx.eval_script("f;") &gt;&gt;&gt; f.hello() Hello, Javascript ...

    Tricks of the Windows video Game Programming---part1

    Tricks of the Windows video Game Programming&lt;br&gt;&lt;br&gt;PART I Windows Programming Foundations 7&lt;br&gt;1 Journey into the Abyss 9&lt;br&gt;A Little History.............................................................

    day021-反射和注解笔记和代码.rar

    //通过构造方法对象去用构造方法创建对象 =&gt; 相当于new 一个对象 Object instance = constructor.newInstance(Object 实参);//可以创建任意访问权限的有参或者无参构造 普通方法 Method[] ...

    1234.htmlyangzihang

    &lt;!... ... &lt;head&gt; &lt;meta charset="utf-8"&gt; &lt;title&gt;2019新年倒计时&lt;/title&gt; ... if (x &lt;= 0) clearInterval(x); }, 1000); const getTrueNumber = x =&gt; (x &lt; 10 ? "0" + x : x); &lt;/script&gt; &lt;div style="text-ali

    asp.Net经典面试33条题及答案

    1, .NET中类和结构的区别?&lt;br&gt;2, 死锁的必要条件?怎么克服?&lt;br&gt;3, 接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体...&lt;br&gt;4, 构造器Constructor是否可以被继承?是否可以被Override?&lt;br&gt;......

    js使用小技巧

    &lt;input type=text onkeypress="return event.keyCode&gt;=48&&event.keyCode&lt;=57||(this.value.indexOf(".")&lt;0?event.keyCode==46:false)" onpaste="return !clipboardData.getData("text").match(/D/)" ondragenter=...

    SpringMVC-Mybatis-Shiro-redis-master 权限集成缓存中实例

    在&lt;build&gt; 标签内加入即可,如果还是不能解决,那么请你加群(改名后)说明你的问题,有人会回答你。 5.Tomcat7以上在访问JSP页面的时候,提示JSTL错误。 这个错误是因为Tomcat7 中没有 JSTL 的jar包,现在已经在...

    jquery需要的所有js文件

    return e},isOverAxis:function(a,b,c){return a&gt;b&&a&lt;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 ...

    Oracle命令大全

    Constructor cons1 = userServiceClass.getConstructor(UserDao.class); Object userService = cons1.newInstance(userDao); WebUtils.setUserService(config.getServletContext(), userService); ...

    C#网页版+客户端版聊天软件

    = "1.0.1.7") throw new IncompatibleException(); string username = ServerImpl.Instance.GetUserName(context); if (string.IsNullOrEmpty(username)) throw new UnauthorizedException(); AccountState ...

Global site tag (gtag.js) - Google Analytics