使用[[[Ljava.lang.String;
表示法是表示数组类名称的标准方式。
XMLEncoder 和 XMLDecoder 使用标准 Java 功能来写入和读取数组:
String[][][] foo = new String[3][4][5];
foo[0][0][0] = "a";
foo[2][3][4] = "z";
XMLEncoder encoder = new XMLEncoder(System.out);
encoder.writeObject(foo);
encoder.flush();
encoder.close();
产生以下结果:
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0_22" class="java.beans.XMLDecoder">
<array class="[[Ljava.lang.String;" length="3">
<void index="0">
<array class="[Ljava.lang.String;" length="4">
<void index="0">
<array class="java.lang.String" length="5">
<void index="0">
<string>a</string>
...
我目前没有发现使用 Class.forName() 与自建类名有任何问题(例如,在前面添加[L
,因为 Java 标准类也以相同的方式使用它。
Class arrayClass = Class.forName("[L" + "java.lang.String" + ";");
并且作为Class.forName 的 JavaDoc http://download.oracle.com/javase/6/docs/api/java/lang/Class.html#forName%28java.lang.String,%20boolean,%20java.lang.ClassLoader%29描述,该类已加载但未初始化,并且您也不需要为其创建实例。
If name
表示一个
数组类,组件类型
数组类已加载但未加载
已初始化。
你最后关于各种博客文章的评论,其中这不起作用,调查起来很有趣。