在Java中,“void”可以被视为原始类型吗?

时间:2011-01-13 15:11:21

标签: java eclipse void eclipse-jdt

我注意到了Eclipse JDT uses void as a primitive type。这可以被认为是正确的吗?

7 个答案:

答案 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:d​​oc 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)

我看到你对此争论很多,但是...

伙计们,在java.lang.Class中有一个名为isPrimitive()的函数

那我们为什么不使用void类对象调用它并得到答案呢?

enter image description here

此外,Void.TYPE是使用Class.getPrimitiveClass(“ void”)获取的。

事实很明显,它是原始的。

enter image description here