我注意到eclipse JDT 用途 void
作为基元类型. 这能算是正确的吗?
我发现,在这样的情况下,你不能不去看Java语言规范。它很清楚地说明了这样一个事实 void
并不是一个原始人。
首先。void
不在 基元类型列表. 后来,JLS明确指出。
Java编程语言不允许 "投向虚空"... ... void不是一种类型 http:/java.sun.comdocsbooksjlsthird_editionhtmlstatements.html#5989。 (重点是我)
此外: void
见于 关键词列表,而不是文言文列表。
该 理由 你看到你所做的是 善解人意 迈克尔-博格沃特写的
所以,回答你的标题:不是。在Java中。void
不能被认为是一个基元。回答你的正文:是的,Eclipse JDT代码是正确的,它需要做什么。
没有void不是一个基元类型。它只是一个关键字,用来表示一个方法没有返回值。最接近的是java.lang.Void类,从Javadocs中描述为。
Void类是一个不可更改的占位符类,用来保存对代表Java关键字void的Class对象的引用。
在JDT中的存在只是为了构建代码的AST。如果你看同一文档中的字段值描述,它说。
"void "这个基元类型的类型代码. 请注意,"void "是特殊的,它唯一合法的用途是作为方法返回类型和作为类型文字。
从Java 6 API文档:
公共布林 isPrimitive() - 确定指定的Class对象是否代表一个基元类型。
返回:如果并且 唯有 该类代表 基本型
我自己检查了一下。
void.class.getName() // void (OK)
void.class.isPrimitive() // true (??)
Void.class.getName() // java.lang.Void (OK)
Void.class.isPrimitive() // false (OK)
这是个错误吗?我知道void是 不 基元类型 关键字),但为什么void.class.isPrimitive()会返回true?
edit:我觉得应该澄清一下,所以我建议java:doc中的 bug 7019906. 在我看来,它应该是。
public boolean isPrimitive() - 确定指定的Class对象是否代表一个基元类型。或关键字void.
如果且仅如果这个类代表一个基元类型,则返回:true。或关键字void.
从你的链接中。
请注意,"void "的特殊性在于它的唯一合法用途是作为方法返回类型和类型文字。
还请注意,这是一个与AST节点有关的类,也就是Java语言的语法。
基本上,在对语言语法进行建模时。void
和基元类型出现在一些相同的地方,所以当把语法表示为一个Java类时,你必须把它归类。
据我所知,void它不是一个基元类型。然而,出于反射的原因,他们在类Type中加入了这个常量!
这里是你所引用的javadoc中的内容。
"void "这个基元类型的类型代码. 注意,"void "是 特殊 因为它的唯一合法用途是作为方法返回类型和类型文字。
请注意粗体字。我想这已经解释了一切。