测试辅助类:
public class Student { String name = "无名氏"; //无参构造函数 public Student(){ } //有参构造函数 public Student(String name){ this.name = name; } //成员方法 public void print(){ System.out.println(name); } }
测试类:
public class Test { public static void main(String[] args) throws Exception { System.out.println("1、通过 new 方式,对构造函数无限制"); Student stu = new Student("张三"); stu.print(); System.out.println("2、通过Class.newInstance(),适用于包含无参构造函数的类"); Student stu2 = (Student)Class.forName("Student").newInstance(); stu2.print(); System.out.println("3、通过java.lang.reflect.Constructor newInstance(),对构造函数无限制"); Class<?> studentClass = Class.forName("Student"); Student stu3 = (Student)studentClass.getConstructor(String.class).newInstance("王五"); stu3.print(); } }
输出结果:
1、通过 new 方式,对构造函数无限制 张三 2、通过Class.newInstance(),适用于包含无参构造函数的类 无名氏 3、通过java.lang.reflect.Constructor newInstance(),对构造函数无限制 王五