public static Car initByDefaultConst()throws Throwale{
//通过类转载器获得Car对象
ClassLoader loader = Thread.currentThread().getContextClassLoader();
class clazz = loader.loadClass("com.baobaotao.reflect.Car");
//获取类的默认构造器并实例化
Constructor cons = clazz.getDeaclaerdConstructor((Class[])null);
Car car = (Car)cons.newInstance();
//通过反射设置属性
Method setBrand = clazz.getMethod("setBrand",String.class);
setBrand.invoke(car,"红旗");
Method setMaxSpeed = clazz.getMethod("setMaxSpeed",int.class);
setMaxSpeed.invoke(car,200);
return car;
}
使用到的类:ClassLoader,Class,Constructor,Method("(String)此对象方法名","(Class)方法入参对象类型"),
invoke("(Object)要操作的实例对象","(Object)目标方法入参");
ClassLoader:类装载器,把一个类装入JVM:
(1)装载:查找和导入class文件
(2)链接:校验:检查载入class文件数据正确性;
准备:给类的静态变量分配存储空间;
解析:将符号引用转成直接引用;
【解析步骤】
(3)初始化:对类的静态变量,静态代码块执行初始化工作。
AppClassLoader extends ClassLoader extends ClassLoader(C++)