Java反射获取构造方法

来源:互联网 发布:股票医生软件下载 编辑:程序博客网 时间:2024/05/21 19:37

【通过反射获取构造方法并使用】

获取构造方法

public Constructor[] getConstructors():所有公共构造方法

public Constructor[] getDeclaredConstructors():所有构造方法

① // 获取字节码文件对象

Class c = Class.forName("cn.iponkan.Person");

②      Constructor[] cons = c.getDeclaredConstructors();

        for (Constructor con : cons) {

     System.out.println(con);//打印出Person类中所有的构造方法

    }

 

获取单个构造方法

 public Constructor<T>  getConstructor(Class<?>... parameterTypes)

 参数表示的是:你要获取的构造方法的构造参数个数及数据类型的class字节码文件对象

Constructor con = c.getConstructor();// 返回的是构造方法对象

 

 

创建对象

newInstance()

con.newInstance(Hizi", 20);

 

public T newInstance(Object... initargs)

   // 使用此 Constructor对象表示的构造方法来创建该构造方法的声明类的新实例,并用指定的初始化参数初始化该实例。

Object obj = con.newInstance();//调用Person类的无参构造方法创建Person对象obj



通过反射去获取该构造方法并使用

①// 获取字节码文件对象

Class c = Class.forName("cn.iponkan.Person");

 

②// 获取带参构造方法对象

// public Constructor<T> getConstructor(Class<?>... parameterTypes)

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

 

③// 通过带参构造方法对象创建对象

// public T newInstance(Object... initargs)

Object obj = con.newInstance("Hizi", 22 "合肥 ");

System.out.println(obj);

 

通过反射获取私有构造方法并使用

①// 获取字节码文件对象

Class c = Class.forName("cn.iponkan.Person");

 

②// 获取私有构造方法对象

Constructor con = c.getDeclaredConstructor(String.class);

 

③// 用该私有构造方法创建对象

// IllegalAccessException:非法的访问异常。

// 暴力访问

con.setAccessible(true);// 值为true则指示反射的对象在使用时应该取消Java语言访问检查。

Object obj = con.newInstance("Hizi");

 

System.out.println(obj);


原创粉丝点击