java类实例化的常用方式
测试辅助类:
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(),对构造函数无限制
王五