private void reflectionMethodTest() {
/** 获取方法 */
Method invalidateMethod = getReflectionMethod("android.view.View",
"invalidate", new Class<?>[] { boolean.class });
/** 调用方法 */
try {
/** this为 invalidateMethod方法的父对象 */
invalidateMethod.invoke(this, false);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
/**
* 获取反射调用的方法
*
* @param className
* 类名
* @param methodName
* 方法名
* @param parmTypeList
* 参数类型列表
* @return
*/
private Method getReflectionMethod(String className, String methodName,
Class<?>[] parmTypeList) {
Method mMethod = null;
try {
Class<?> mClass = Class.forName(className);
try {
/** 根据methodName, parmList获取所有方法包括public和非public */
mMethod = mClass.getDeclaredMethod(methodName,
parmTypeList);
mMethod.setAccessible(true);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return mMethod;
}
这个链接中说的很详细 http://www.cyqdata.com/android/article-detail-36281