我正在查看一些类似的Java反射源代码:
Method fixTransparentPixels = TextureAtlasSprite.class.getDeclaredMethod("fixTransparentPixels", new Class[] { [[I.class });
引用的方法声明如下:
private void fixTransparentPixels(int[][] p_147961_1_) {...}
我不明白的是[[I.class
部分。现在,我得到实际的Class[]
数组来确定你想要的声明方法的形式(参数类型等),但[[I.class
实际意味着什么?
此外,当我尝试自己编写这个反射代码时,我的IDE会在[[I.class
位上给出语法错误。任何人都可以给我任何信息吗?
干杯。
答案 0 :(得分:2)
使用getDeclaredMethod(String name, Class<?>... parameterTypes)
时,parameterTypes
必须是参数的类(显然)。因此,在这种情况下,fixTransparentPixels
需要int[][]
,因此parameterTypes将为int[][].class
。
这将有效:
TextureAtlasSprite.class.getDeclaredMethod("fixTransparentPixels", int[][].class);
答案 1 :(得分:1)
[[I
是int[][]
的类的内部名称:
System.out.println(int[][].class.getName());
输出[[I
或Class.forName("[[I")
== int[][].class
。
但是,在源代码中编写[[I.class
是违法的。您应该改为int[][].class
。