获取数组类型的Class对象的最佳方法是什么?

Sam*_*ard 1 java arrays reflection constants literals

获取类的类文字很容易:

String.class
Run Code Online (Sandbox Code Playgroud)

但是如何获取数组类型的类对象?

这可行,但它很难看,可能不是编译时常量:

new byte[0].getClass()
Run Code Online (Sandbox Code Playgroud)

我查看了JLS,但我发现的唯一一件事就是根据JLS定义我所谓的"类文字"不是"文字".

rge*_*man 5

即使对于数组类型,您仍然可以使用类文字.编译得很好.

Class<String[]> clazz = String[].class;
Class<byte[]> clazz2 = byte[].class;
Run Code Online (Sandbox Code Playgroud)

JLS第15.8.2节规定:

类文字是由类,接口,的名称的表达阵列,或原语类型或伪类型void,接着是"" 和令牌class.

(大胆强调我的)