//属性获取
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();//通过对象获取
- getDeclaredMethods() :反映此 Class 对象表示的类或接口声明的所有方法,但不包括继承的方法。 简称:
所有的方法除了继承的
- getMethods():反映此 Class 对象所表示的类或接口的指定公共成员方法。
简称:公共方法包括继承的
- 对上面的补充:
xxx.getClass().getSuperclass()
,这可以获得继承的父类的Class信息