'Java反射中的[L'前缀

pet*_*bel 0 java arrays reflection

使用Java6反射API,Class.getDeclaredFields返回非常奇怪的值.类字段示例:

protected String[] arrF = new String[15];
Run Code Online (Sandbox Code Playgroud)

使用getDeclaredFields正确Class,Field返回a:

  • name = arrF
  • type = [Ljava.lang.String;

问题:[L前缀是否意味着它arrF是一个数组?我可以一直依赖它,即字段是一个数组iff类型的前缀[L?如果不是,我如何获得有关该字段"数组"的一些信息?

Eng*_*uad 6

[表示一维数组([[是2维数组),L后跟类/接口名称(Lclassname)是该数组的类型.

我可以一直依赖它,即字段是一个数组iff类型的前缀是[L?

是.或者更好,使用Class#isArray().