Class.getName()
的java文档说:
返回 实体的名称(
class
,interface
,array class
,primitive type
或{此void
对象表示的{1}}}为Class
。
什么时候返回 String
?
答案 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()
,那么当你看到这个时会有一个实际的例子。