Android系统源码中有个静态函数,是hide,需要反射,接口如下:
public static Bitmap screenshot(Rect sourceCrop, int width, int height, int rotation) {
//忽略代码内部实现细节
}
需要对其反射时,参数中有int类型的。
正确的反射配置类型是:“int.class”,而不是错误的“Integer.class”;
如果对象内的方法的形参是int类型的,则parameterTypes是int.class
final Class surfaceControlClass = Class.forName("android.view.SurfaceControl");
final Method screenshot = surfaceControlClass.getMethod("screenshot",
new Class[]{Rect.class, int.class, int.class, int.class});
更进一步的简洁,并不需要 new Class[]{}来充当,本身就是一个可变参数
final Class surfaceControlClass = Class.forName("android.view.SurfaceControl");
final Method screenshot = surfaceControlClass.getMethod("screenshot",
Rect.class, int.class, int.class, int.class);
网友评论