Java 反射:构造方法

获取构造方法

 

1.借助Class类某些可以获取对应类中声明的构造方法实例对象,这些方法有:

 

⑴Constructor[] getConstrutors():返回该Class对象表示类包含的所有public构造方法(不含继承)所对应Constructor对象数组。

 

⑵Constructor getConstrutor(Class<?>... parameterTypes):返回与该Class对象表示类中参数列表相匹配的public构造函数(不含继承)对应的Constructor对象。

 

⑶Constructor<?>[] getDeclaredConstructors():返回一个该Class对象表示类中声明的所有构造方法(不区分访问权限)对应的Constructor对象数组。

 

⑷Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes):返回与该Class对象表示类中定义的形参类型相匹配的构造方法(不区分访问权限)的Constructor对象。

 

parameterTypes的解释:

如果方法参数的数据类型为基本数据类型,则parameterType应为基本数据类型包装类.TYPE;如果方法参数的数据类型为基本数据类型包装类,则的数据类型应为包装类.class 

 

 操作构造方法——获取构造方法信息 

 

1.通过Constructor类某些方法可以获取某个构造方法的信息,这些方法如下:

 

⑴Class<T> getDeclaringClass():返回声明Constructor对象对应构造方法的类的Class对象。

 

⑵int getModifiers():以整数形式返回Constructor对象表示的构造函数的修饰符。

 

⑶String getName() :以字符串形式返回Constructor对象所表示得构造方法的名称。

 

⑷Class<?>[] getParameterTypes():返回由Constructor对象所表示的构造方法的形参类型对应Class对象组成的数组此 。如果构造方法没有参数,则数组长度为0。

 

注意:

  • getConstructors()和getConstructor(Class<?>... parameterTypes)方法均无法获取非public类中默认无参构造方法对应的Constructor对象。(参见代码1)
  • getDeclaredConstructors()和getDeclaredConstructor(Class<?>... parameterTypes)方法可以获取非public类中默认无参构造方法对应的Constructor对象。 (参见代码2)

 

操作构造方法——创建对象

 

1.通过Constructor类某些方法可以创建对象,这些方法如下:

 

void setAccessible(boolean flag):调用构造函数时是否忽略访问权限的影响,true表示忽略,false表示不忽略。

 

T newInstance(Object... initargs):使用此Constructor对象表示的构造方法来创建声明该构造方法类的新对象。initargs为传入该构造方法中的参数,如果该构造方法没有参数,则可设定为null或一个长度为0的数组。

 

 

 

创建对象方式

 

1.可以通过如下三种方式创建对象

 

通过new关键字创建对象。

 

通过调用Constructor类的newInstance方法可以创建对象。

 

通过调用Class类中的newInstance()方法创建对象:

 

T newInstance():创建此 Class类所表示类的新对象,等效于使用new关键字调用无参构造方法创建对象,如下示例:

 

 

 

 

 

 

posted @ 2018-09-29 18:19  龙雪  阅读(184)  评论(0编辑  收藏  举报