(Java基础--反射)构造方法的反射应用

Constructor类反射

1、概述

        如果指定的类中没有空参数的构造函数,或者要创建的类对象需要通过指定的构造函数进行初始化。这时怎么办呢?这时就不能使用Class类中的newInstance方法了。既然要通过指定的构造函数进行对象的初始化。就必须先获取这个构造函数——ConstructorConstructor代表某个类的构造方法。

2、获取构造方法:

        1)得到这个类的所有构造方法:如得到上面示例中Person类的所有构造方法

              Constructor[] cons = Class.forName(“cn.itheima.Person”).getConstructors();

        2)获取某一个构造方法:

              Constructor con=Person.class.getConstructor(String.class,int.class);

3、创建实例对象:

        1)通常方式:Person p = new Person(“lisi”,30);

         2)反射方式:Person p= (Person)con.newInstance(“lisi”,30);

注:

        1、创建实例时newInstance方法中的参数列表必须与获取Constructor的方法getConstructor方法中的参数列表一致。

         2newInstance():构造出一个实例对象,每调用一次就构造一个对象。

         3、利用Constructor类来创建类实例的好处是可以指定构造函数,而Class类只能利用无参构造函数创建类实例对象。

示例:

[java]  view plain copy
  1. //接上面的示例  
  2. //通过Constructor对象来创建类实例方法  
  3. public static void createPersonClass_2() throws Exception{  
  4.     //获取Person类的Class对象  
  5.     String className="cn.itheima.Person";  
  6.     Class clazz=Class.forName(className);  
  7.     //Class clazz=Person.class;  
  8.           
  9.     //获取指定构造函数的类实例  
  10.     Constructor con=clazz.getConstructor(String.class,int.class);  
  11.     Person p=(Person) con.newInstance("lisi",30);  
  12.     System.out.println(p.toString());  
  13. }  

你可能感兴趣的:((Java基础--反射)构造方法的反射应用)