Java中如何表示数组的类字面量?含基本类型数组及更优方案
获取Java数组类的直接方式
其实Java本身就支持直接用类字面量语法获取数组类的Class对象,完全不需要通过创建数组实例再调用getClass(),这是最简洁高效的方式。
1. 基本类型数组
直接使用 基本类型[].class 的形式:
byte[].class→ byte数组的Class对象int[].class→ int数组的Class对象boolean[].class→ boolean数组的Class对象char[].class→ char数组的Class对象- 同理,
short[].class、long[].class、float[].class、double[].class都是合法的
甚至多维数组也可以直接写:
int[][].class→ 二维int数组的Class对象
2. 引用类型数组
同样用 引用类型[].class 的形式:
String[].class→ String数组的Class对象List[].class→ List数组的Class对象- 自定义类数组比如
User[].class也完全可行
3. 备选方案:Class.forName()
如果你只有字符串形式的类标识,也可以用Class.forName()来获取,不过需要记住数组类的命名规则:
- 基本类型数组:用
[加对应类型的缩写,比如byte数组是"[B",int数组是"[I" - 引用类型数组:用
[L加全类名加;,比如String数组是"[Ljava.lang.String;"
示例代码:
// 获取byte数组类 Class<?> byteArrayClass = Class.forName("[B"); // 获取String数组类 Class<?> stringArrayClass = Class.forName("[Ljava.lang.String;");
不过这种方式需要处理ClassNotFoundException,而且可读性不如直接用.class语法,所以优先推荐第一种方式。
内容的提问来源于stack exchange,提问作者Joshua Fox
相关产品推荐
相关产品推荐

