美文网首页
Java反射调用

Java反射调用

作者: 蒸汽飞船 | 来源:发表于2018-05-07 15:21 被阅读15次
    //属性获取
    try {
        Field field = recycler.getClass().getDeclaredField("mCachedViews");
        field.setAccessible(true); // 抑制Java对修饰符的检查
        ArrayList<ViewHolder> cacheViews = (ArrayList<ViewHolder>) field.get(recycler);
        //get获取结果,set方法设值
        ...
    } catch (Exception e) {
        e.printStackTrace();
       
    }
    
    //方法调用(getClass获取本类的方法属性,getSuperclass取父类的)
    Method method = pool.getClass().getSuperclass().getDeclaredMethod("size");
                method.setAccessible(true); // 抑制Java的访问控制检查
    int size = (int) method.invoke(pool);
    return size;
    
    //Class信息的获取
    Class<?> clazz = Class.forName("android.support.v7.widget.RecyclerView$RecycledViewPool$ScrapData");//内部类加$符号
    recycledViewPool.getClass();//通过对象获取
    
    1. getDeclaredMethods() :反映此 Class 对象表示的类或接口声明的所有方法,但不包括继承的方法。 简称:所有的方法除了继承的
    2. getMethods():反映此 Class 对象所表示的类或接口的指定公共成员方法。 简称:公共方法包括继承的
    3. 对上面的补充:xxx.getClass().getSuperclass(),这可以获得继承的父类的Class信息

    相关文章

      网友评论

          本文标题:Java反射调用

          本文链接:https://www.haomeiwen.com/subject/guxvrftx.html