java反射int类型

2021-10-13  本文已影响0人  100个大西瓜

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);
上一篇 下一篇

猜你喜欢

热点阅读