这节课我们来讲Constructor类,这个类表示构造器,直接看代码
package reflection;
import helloworld.MyArrayList;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class ConstructorTeach {
public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
//依然用MyArrayList做例子
//说明一下,Class是有泛型的
Class<MyArrayList> myArrayListClass = MyArrayList.class;
//获取构造器,和获取方法类似
//首先来试试获取无参构造器
Constructor<MyArrayList> noneArgumentConstructor = myArrayListClass.getConstructor();
//再来试试获取有参构造器
//基本数据类型也可以获取Class对象,但基本数据类型的变量没有getClass方法
Constructor<MyArrayList> intConstructor = myArrayListClass.getConstructor(int.class);
//有了构造器就可以构造对象
MyArrayList list1 = noneArgumentConstructor.newInstance();//无参构造器并不用传参数
MyArrayList list = intConstructor.newInstance(15); //有参构造器是必须传入对应参数的
System.out.println(list == null);
System.out.println(list1 == null);
//可以看到对象被成功的构造出来了
//注意,如果想调用无参构造器,可以直接调用Class对象.newInstance()
//注意,该方法仅在该类有无参构造器时可以调用,否则运行时会抛异常
MyArrayList list2 = myArrayListClass.newInstance();
System.out.println(list2 == null);
}
}