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 |
总结
- 数组
class对象名字特别,需要用特殊字符表示。 - 使用
[表示维度,有几维就用几个[。