获取数组类型的 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;

Section 15.8.2 of the JLS 状态:

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;