getClass()。getName()什么时候返回void?

时间:2014-01-09 18:37:54

标签: java class

Class.getName()的java文档说:

  

返回 实体的名称classinterfacearray classprimitive type或{此void对象表示的{1}}}为Class

什么时候返回 String

4 个答案:

答案 0 :(得分:13)

它会为void类型:

的类文字提供void字符串
Class<Void> clazz = void.class;
System.out.println(clazz.getName());

请参阅JLS § 15.8.2进一步阅读:

  

类文字是一个由类名称组成的表达式,   接口,数组或基本类型,或伪类型void   一个'。'和令牌类   [...]
  void.class(§8.4.5)的类型是Class<Void>

答案 1 :(得分:3)

void.class表示void时。 void不是类型本身,但需要一个类来表示某些事物。

例如:

class VoidExample {
    public static void main(String[] args) throws Exception {
        System.out.println(
            VoidExample.class
                .getMethod("main", String[].class)
                    .getReturnType().getName()
        );
    }
}

答案 2 :(得分:1)

嗯,好问题。因为它是开源的,所以建议看一下源代码。我会说当givenClass的类型是java.lang.Void时它会返回void。

答案 3 :(得分:1)

我检查了OpenJDK source,但遗憾的是GetName()是一种原生方法,所以你必须深入挖掘才能找到确切的案例。但是我怀疑,如果你在返回void的方法上调用getReturnType(),那么当你看到这个时会有一个实际的例子。