获取数组类型的 Class 对象的最佳方法是什么?
What's the best way to get a Class object for an array type?
很容易得到 class 的 class 文字:
String.class
但是我怎样才能得到数组类型的 class 对象呢?
这行得通,但很丑,而且可能不是编译时常量:
new byte[0].getClass()
我查看了 JLS,但我唯一发现的是,根据 JLS 的定义,我所谓的 "class literal" 不是 "literal"。
您仍然可以使用 class 文字,即使是数组类型。这编译得很好。
Class<String[]> clazz = String[].class;
Class<byte[]> clazz2 = byte[].class;
A class literal is an expression consisting of the name of a class, interface, array, or primitive type, or the pseudo-type void
, followed by a '.' and the token class
.
(大胆强调我的)
您只需输入
Class<?> clazz = byte[].class;
很容易得到 class 的 class 文字:
String.class
但是我怎样才能得到数组类型的 class 对象呢?
这行得通,但很丑,而且可能不是编译时常量:
new byte[0].getClass()
我查看了 JLS,但我唯一发现的是,根据 JLS 的定义,我所谓的 "class literal" 不是 "literal"。
您仍然可以使用 class 文字,即使是数组类型。这编译得很好。
Class<String[]> clazz = String[].class;
Class<byte[]> clazz2 = byte[].class;
A class literal is an expression consisting of the name of a class, interface, array, or primitive type, or the pseudo-type
void
, followed by a '.' and the tokenclass
.
(大胆强调我的)
您只需输入
Class<?> clazz = byte[].class;