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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴璞玉 黑马帝   /  2012-3-9 18:47  /  1707 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

自定义一个类叫Student,通过反射取构造函数的时候发生异常,这是为什么呢
class  ReflectTest
{
        public static void main(String[] args) throws Exception
        {
                Constructor constructor=Class.forName("Student").getConstructor(String.class,int.class);
                Student s=(Student)constructor.newInstance(new String("张三"),23);
        }
}
class Student
{
        private String name;
        private int age;
        Student(String name,int age)
        {
                this.name=name;
                this.age=age;
        }
}

3 个回复

倒序浏览
Class.forName(),这里面要包名.类名吧
回复 使用道具 举报
主类需要加public,并跟源文件名相同
回复 使用道具 举报
本帖最后由 H07000223 于 2012-3-9 19:08 编辑

student的构造方法要用public修饰,有包的话,要写成包名.类名
  1. package java_Test;

  2. import java.lang.reflect.Constructor;

  3. public class Test_020
  4. {
  5.         public static void main(String[] args) throws Exception
  6.         {
  7.                 Constructor<?> constructor = Class.forName("java_Test.Student2")
  8.                                 .getConstructor(String.class, int.class);
  9.                 Student2 s = (Student2) constructor.newInstance("张三", 23);
  10.                
  11.                 System.out.println(s.name+s.age);
  12.         }
  13. }

  14. class Student2
  15. {
  16.         public String name;
  17.         public int age;

  18.         public Student2(String name, int age)
  19.         {
  20.                 this.name = name;
  21.                 this.age = age;
  22.         }
  23. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马