开发者学堂课程【Java 高级编程:反射调用构造方法】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/20/detail/381
反射调用构造方法
目录:
1、修改Person类的定义
2、获取构造
3、调用指定构造实例化对象
1.修改Person类的定义
在一个类之中除了有继承的关系之外最为重要的操作就是类中的结构处理 ,而类中的构造里面首先需要观察的是构造法使用问题
实例化方法替代:
clazz . getDeclaredConstructor (). newInstance ():
所有类的构造方法的获取都可以直接通过 Class 类来完成,该类中定义有如下的几种。
获取所有构造方法:
public Constructor <?>[] getDeclaredConstructors ()
throwsSecurityException
获取指定构造方法:
public Constructor < T > getDeclaredConstructor ( Class <?>...parameterTypes )
throws NoSuchMethodException ,SecurityException
获取所有构造方法:
public Constructor <?>[]getConstructors ()
throws SecurityException
获取指定构造方法:
public Constructor < T > getConstructor ( Class <?>.. parameterTypes )
throws NoSuchMethodException ,Security Exception。
2.获取构造
此时获取的是类之中的全部构造方法,但是也可以获取 一个指定参数的构造例如:现在的 Person 类之中提供有两个构造:
3.调用指定构造实例化对象
此时程序打算调用 Person 类之中的有参构造方法进行 Person 类对象的实例化处理,必须要指名要调用的构造,再通过 Constructor 类之中提供的实例化方法操作:
public T newInstance (0bject... initargs )throws InstantiationException ,
IllegalAccessException,IllegalArgumentException, InvocationTargetException
范例:
虽然程序代码本身允许开发者调用有参构造处理,但 从实际的开发来看所有的使用反射的类中最好提供有无参构实例化来达到统一性