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