A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

想通过反射获取类的构造函数,可是………那么问题来了
  1. import java.lang.reflect.Constructor;


  2. class ReflectDemo
  3. {
  4.         public static void main(String[] args)  throws ClassNotFoundException,NoSuchMethodException
  5.         {
  6.                 Person p = new Person();
  7.                 //获取Class对象的三种方式
  8.                 Class clazz1 = Person.class;
  9.                 Class clazz2 = p.getClass();
  10.                 Class clazz3 = Class.forName("Person");
  11.                 System.out.println("clazz1="+clazz1.toString());
  12.                 System.out.println("clazz2="+clazz2);
  13.                 System.out.println("clazz3="+clazz3);
  14.        
  15.                 //获取所有构造方法的两种方式
  16.                 Constructor con1 = clazz1.getConstructor();               
  17.                 System.out.println("con1 = "+con1);
  18.                 Constructor con2 = clazz1.getConstructor(String.class,int.class);
  19.                 System.out.println("con2 = "+con2);

  20.                 System.out.println("Hello World!");
  21.         }
  22. }


  23. class Person
  24. {
  25.         String name;
  26.         private int age;

  27.         Person(){}
  28.         Person(String name,int age)
  29.         {
  30.                 this.name = name;
  31.                 this.age = age;
  32.         }

  33.         public String getName()
  34.         {
  35.                 return name;
  36.         }
  37.         public void setName(String name)
  38.         {
  39.                 this.name = name;
  40.         }

  41.         private int getAge()
  42.         {
  43.                 return age;
  44.         }

  45.         private void setAge(int age)
  46.         {
  47.                 this.age = age;
  48.         }
  49. }
复制代码

编译通过,运行报错:
D:\CODE\heima\reflect>javac ReflectDemo.java
注: ReflectDemo.java使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

D:\CODE\heima\reflect>java ReflectDemo
clazz1=class Person
clazz2=class Person
clazz3=class Person
Exception in thread "main" java.lang.NoSuchMethodException: Person.<init>()
        at java.lang.Class.getConstructor0(Unknown Source)
        at java.lang.Class.getConstructor(Unknown Source)
        at ReflectDemo.main(ReflectDemo.java:18)

这是为什么?哪里错了?

1 个回复

倒序浏览
我晕,发错板块了………………
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马