当前位置:首页 > 开发 > 编程语言 > JDK JVM > 正文

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

发表于: 2014-09-01   作者:一共丢七只羊   来源:转载   浏览:
摘要: Constructor<?> cons[]=demo.getConstructors();在JDK1.7报错,在JDK1.6可以运行 百度了一下,发现这篇文章,java反射中构造函数的问题 http://bbs.csdn.net/topics/390183924   package Reflect; import java.lang.reflect.Const

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

 

问题解决.

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

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
工程结构图: Helper.java文件内容如下: package com.shihuan.aio.util; import java.util.Random; i
Ubuntu操作系统下如何手动安装JDK1.7呢?本文是我经历的全过程。 Ubuntu版本:14.04 LTS JDK版本:1
Linux安装JDK1.7 Ubuntu版本:12.04 LTS JDK版本:1.7.0_04 安装目录:/usr/local/development/jdk1
最近安装了Win8,所以从环境配置开始,总结Win8下Java编程工具及其他工具的安装与使用。 工具/原料
由于官网是E文的,很多同学不感冒,但又希望从官网下载,因为这样才更权威一点。这里就讲一下如何从
1、首先到Oracle官网下载Linux版本的32位版JDK:jdk-7-linux-i586.rpm,如下图所示: 2、解压这个软
一、概述 准备 JDK7下载 http://download.java.net/jdk7/ API文档 http://download.java.net/jdk7/d
第一步.MyEclipse10 Tomcat7 JDK1.7下载 MyEclipse10 http://downloads.myeclipseide.com/downloads
Ubuntu操作系统下如何手动安装JDK1.7呢?本文是我经历的全过程。 Ubuntu版本:12.04 LTS JDK版本:1
安装JDK1.7 1. 打开网址http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u5-downloa
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号