【问题标题】:What's the best way to get a Class object for an array type?获取数组类型的 Class 对象的最佳方法是什么?
【发布时间】:2015-02-03 19:19:48
【问题描述】:

获取类的类字面量很容易:

String.class

但是我怎样才能得到一个数组类型的类对象呢?

这可行,但很难看,而且可能不是编译时间常数:

new byte[0].getClass()

我查看了 JLS,但唯一发现的是,根据 JLS 的定义,我所说的“类文字”不是“文字”。

【问题讨论】:

    标签: java arrays reflection constants literals


    【解决方案1】:

    你仍然可以使用类文字,即使是数组类型。这样编译就好了。

    Class<String[]> clazz = String[].class;
    Class<byte[]> clazz2 = byte[].class;
    

    Section 15.8.2 of the JLS 状态:

    类文字是一个表达式,由类、接口、数组或原始类型或伪类型void的名称组成,后跟一个 '。'和令牌class

    (我的粗体强调)

    【讨论】:

      【解决方案2】:

      你可以直接输入

      Class<?> clazz = byte[].class;
      

      【讨论】:

        猜你喜欢
        • 2020-10-30
        • 2014-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-17
        • 2021-10-14
        • 2020-03-09
        • 2010-12-02
        相关资源
        最近更新 更多