Java文档为Class.getName()
说:什么时候getClass()。getName()返回void?
返回的实体的名称(
class
,interface
,array class
,primitive type
,或void
)本Class
对象表示,作为一个String
。
什么时候它会返回void
?
Java文档为Class.getName()
说:什么时候getClass()。getName()返回void?
返回的实体的名称(
class
,interface
,array class
,primitive type
,或void
)本Class
对象表示,作为一个String
。
什么时候它会返回void
?
当它是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()
);
}
}
它会给你void
字符串类字面void
类型:
Class<Void> clazz = void.class;
System.out.println(clazz.getName());
参考JLS § 15.8.2进一步阅读:
类文字是一种表达,其中包括类的名称, 接口,数组或原始类型,或伪类型void,后接 由'。'和令牌类。
[...]
void.class(§8.4.5)的类型是Class<Void>
。
嗯好问题。因为它是开源的,所以建议看看源代码。我会说,当givenClass的类型为java.lang.Void时,它会返回void。
Void是一个不合理的占位符类,用于存放void.class类型'Void.TYPE'。 – gparyani
我查了OpenJDK source,可惜GetName()
是一个本地方法,所以你必须深入挖掘,找到确切的情况。但是我怀疑,如果您在返回void
的方法上致电getReturnType()
,那么您会看到这个实际情况。
我一直在冲刷JLS,这很有趣,有多少空洞被提及。除了你包含的内容(我没有找到),我找不到任何东西。 – Radiodef
@Radiodef有时只是你达到了正确的话题。而已。我以前去过那里,所以我知道确切的主题;) –
现在我也是。 :P“伪类型”是我一直在寻找的东西。谢谢。 – Radiodef