java 反射

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++)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值