反射工具类,如斯优雅,安卓高级开发面试题

本文介绍了对jOOR反射工具类的改造,包括在实例化过程中对多个构造函数的排序选择,以及处理final字段的异常情况。通过示例展示了如何避免错误并提高反射操作的准确性,适合Android高级开发者的面试准备。
摘要由CSDN通过智能技术生成

assertEquals(null, Test1.S_DATA.I_DATA.I_INT2);// 没操作过就是 null
}

根据如上注释相信大家也可以理解一二了,如果还想了解更多使用方式,可以查看我写的单元测试类 ReflectUtilsTest,其使用方式就介绍到这里,下面介绍其实现方式。

Achieve

实现的话是站在 jOOR 的肩膀上进行改造,其内部封装了一个 private final Object object; 变量,每次进行反射操作时都会重新实例化一个变量并把结果赋予该变量,最终 get() 就是获取其值,比如我们来看一下 newInstance 的操作,其涉及的代码如下所示:

/**

  • 实例化反射对象
  • @param args 实例化需要的参数
  • @return {@link ReflectUtils}
    */
    public ReflectUtils newInstance(Object… args) {
    Class<?>[] types = getArgsType(args);
    try {
    Constructor<?> constructor = type().getDeclaredConstructor(types);
    return newInstance(constructor, args);
    } catch (NoSuchMethodException e) {
    List<Constructor<?>> list = new ArrayList<>();
    for (Constructor<?> constructor : type().getDeclaredConstructors()) {
    if (match(constructor.getParameterTypes(), types)) {
    list.add(constructor);
    }
    }
    if (list.isEmpty()) {
    throw new ReflectExcept
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值