黑马程序员技术交流社区

标题: 反射的问题 [打印本页]

作者: 吴璞玉    时间: 2012-3-9 18:47
标题: 反射的问题
自定义一个类叫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;
        }
}
作者: 杨毅    时间: 2012-3-9 18:50
Class.forName(),这里面要包名.类名吧
作者: 刘蕴学    时间: 2012-3-9 18:51
主类需要加public,并跟源文件名相同
作者: H07000223    时间: 2012-3-9 19:05
本帖最后由 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. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2