jOOR反射封装库使用介绍

jOOR是一个简洁的Java反射库,它通过提供流畅的API,简化了对Class、Method等的反射操作,减少了异常处理,并支持链式调用。相比JDK的反射API,jOOR具有优势,如自动处理private方法调用,类型内部转换等。此外,它还提供了on()、exactMethod()、similarMethod()等功能,以及创建对象、调用方法的便捷方式。
摘要由CSDN通过智能技术生成

官方介绍

jOOR - Fluent Reflection in Java jOOR is a very simple fluent API that gives access to your Java Class structures in a more intuitive way. The JDK’s reflection APIs are hard and verbose to use. Other languages have much simpler constructs to access type meta information at runtime. Let us make Java reflection better. http://www.jooq.org/products

大意为:
jOOR提供了一种更为直观的方式来构建JDK原生的反射调用,因为JDK提供的反射API使用起来较冗长(它对包java.lang.reflect进行了简单封装,使得反射更加方便)。

gradle配置

compile'org.jooq:joor:0.9.6'

举例

先看一个简单例子,对比JDK的反射API和jOOR的方法调用对比。

JDK的反射API:

    /**
     * 反射读取系统SystemProperties的属性值
     * @param key
     * @param defaultValue
     * @return
     */
    public static String getValue(String key, String defaultValue) {
        String value = "";
        try {
            Class<?> cls = Class.forName("android.os.SystemProperties");
            Method getMethod = cls.getDeclaredMethod("get", String.class, String.class);
            getMethod.setAccessible(true);
            return (String) getMethod.invoke(null, key, defaultValue);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        return value;
    }

jOOR的反射调用:

    /**
     * 反射读取系统SystemProperties的属性值
     * @param key
     * @param defaultValue
     * @return
     */
    public static String getValueEx(String key, String defaultValue) {
        String value;
        try {
            value = Reflect.on("android.os.SystemProperties")
                .call("get", key, defaultValue).get();
        } catch (ReflectException e) {
            e.printStackTrace();
            value = "";
        }
        return value
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值