反射(3)--Constructor类(构造器)

来源:互联网 发布:遗传算法与svm 编辑:程序博客网 时间:2024/05/29 07:04

获取Constructor类(构造器)

         通过Class类的以下方法,我们可以获得构造器。

l  publicConstructor[] getConstructors():所有公共构造方法

l  publicConstructor[] getDeclaredConstructors():所有构造方法

l  publicConstructor<T> getConstructor(Class<?>... parameterTypes):获取单个构造方法,参数表示的是:你要获取的构造方法的构造参数个数及数据类型的class字节码文件对象

l  publicConstructor<T> getDeclaredConstructor(Class<?>... parameterTypes):获取单个构造方法(能获取私有的,但要用Constructor类的setAccessible方法设置访问权限),参数表示的是:你要获取的构造方法的构造参数个数及数据类型的class字节码文件对象

 

Constructor类的常用方法

l  public T newInstance(Object...initargs):使用此 Constructor 对象表示的构造方法来创建该构造方法的声明类的新实例,并用指定的初始化参数初始化该实例。

// 获取字节码文件对象

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

// 获取单个构造方法

Constructor con =c.getConstructor();

//创建该构造方法的声明类的新实例

Object obj =con.newInstance();

通过反射去获取带参构造方法并使用:

// 获取字节码文件对象

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

// 获取单个构造方法

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

//创建该构造方法的声明类的新实例

Object obj =con.newInstance("张三", 27, "北京");

 

l  public void setAccessible(boolean flag):值为true则指示反射的对象在使用时应该取消Java语言访问检查。
       通过反射获取私有构造方法并使用:
       // 获取字节码文件对象
       Class c = Class.forName("cn.itcast_01.Person");
       // 获取私有构造方法对象
       Constructor con = c.getDeclaredConstructor(String.class);
       // 暴力访问私有构造方法
       con.setAccessible(true);// 值为true则指示反射的对象在使用时应该取消Java语言访问检查。
       // 用该私有构造方法创建对象
       Object obj = con.newInstance("李四");
0 0
原创粉丝点击