3.2.2 获取数组类

在 Java 中,数组没有 .class 文件,然而 forName 依然可以用于获取数组的 class 对象。

然而,下面代码将抛出 ClassNotFoundException

Class cls = Class.forName("java.lang.String[]");

原因是 Java 中,数组的 class 对象名字有点奇怪,下面一行打印 String 数组的 class 名字,结果为 [Ljava.lang.String;

// 输出 [Ljava.lang.String;
System.out.println(String[].class.getName());

因此,要用 forName 加载 String 一维数组,需要:

Class<?> cls = Class.forName("[Ljava.lang.String;");
  • 注意:[Ljava.lang.String; 最后的分号。

对于 对象数组,名字与 String 数组类似,都是 [L + name + ;,而对 原始类型数组,则对每个类型,都有一个 特殊字符 与之对象,如下表所示:

Encoding ElementType
B byte
C char
D double
F float
I int
J long
L + ElementType + ; reference
S short
Z boolean

总结

  1. 数组 class 对象名字特别,需要用特殊字符表示。
  2. 使用 [ 表示维度,有几维就用几个 [

results matching ""

    No results matching ""