我注意到了Eclipse JDT uses void
as a primitive type。这可以被认为是正确的吗?
答案 0 :(得分:15)
我发现,在这样的情况下,你无法超越Java语言规范。很明显void
不是原始事实。
首先,void
不在list of primitive types。稍后,JLS明确指出:
Java编程语言不允许“强制转换为无效” - void不是类型 http://java.sun.com/docs/books/jls/third_edition/html/statements.html#5989(强调我的)
此外,void
中出现void
,而不是文字列表。
你看到你所做的原因是Michael Borgwardt的list of keywords。
所以,回答你的标题:没有。在Java中,{{1}}不能被视为原语。回答你的身体:是的,Eclipse JDT代码对于它需要做的事情是正确的。
答案 1 :(得分:8)
No void不是原始类型。它只是一个关键字,表示方法没有返回值。你最接近的是java.lang.Void类,它来自Javadocs被描述为:
Void类是不可实现的 占位符类来保存引用 到表示对象的Class对象 Java关键字void。
JDT中的存在仅仅是为代码构建AST。如果您查看相同文档中的字段值描述,则说明:
键入基元类型的代码 “作废”。请注意,“void”是特殊的 它唯一的合法用途是作为 方法返回类型和类型 文字。
答案 2 :(得分:3)
来自Java 6 API docs:
public boolean isPrimitive() - 确定是否指定了Class object表示基本类型。
返回:如果和仅时返回true 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?
编辑: 我认为应该澄清一下,所以我建议使用java:doc bug 7019906。在我看来应该是:
public boolean isPrimitive() - 确定是否指定了Class object表示基本类型或关键字void 。
返回:当且仅当这个时返回true class表示基本类型或关键字void 。
答案 3 :(得分:2)
从您的链接:
请注意,“void”的特殊之处在于它的唯一合法用途是a 方法返回类型和类型 文字。
另请注意,这是一个与AST节点有关的类,即Java语言的语法。
基本上,在对语言语法进行建模时,void
出现在与基本类型相同的某些位置,因此在将语法表示为Java类时,必须对其进行类似的分类。
答案 4 :(得分:0)
据我所知,使其不是原始类型。但是出于反射的原因,它们在类Type中有这个常量!
答案 5 :(得分:0)
这是用你引用的javadoc写的:
键入基本类型“void”的代码。请注意,“void”是特殊,因为它的唯一合法用途是作为方法返回类型和类型文字。
注意粗体字。我认为这解释了一切。
答案 6 :(得分:0)