理解[[某些Java源代码中引用的I.class

时间:2014-03-23 22:36:48

标签: java reflection

我正在查看一些类似的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位上给出语法错误。任何人都可以给我任何信息吗?

干杯。

2 个答案:

答案 0 :(得分:2)

使用getDeclaredMethod(String name, Class<?>... parameterTypes)时,parameterTypes必须是参数的类(显然)。因此,在这种情况下,fixTransparentPixels需要int[][],因此parameterTypes将为int[][].class

这将有效:

TextureAtlasSprite.class.getDeclaredMethod("fixTransparentPixels", int[][].class);

答案 1 :(得分:1)

[[Iint[][]的类的内部名称:
System.out.println(int[][].class.getName());输出[[I
Class.forName("[[I") == int[][].class

但是,在源代码中编写[[I.class是违法的。您应该改为int[][].class