【问题标题】:Is void a type?void 是一种类型吗?
【发布时间】:2011-09-26 19:10:34
【问题描述】:

我无法完全回答“我们为什么要称“void”为'return type'?”

如何证明“void”是一种类型?

【问题讨论】:

    标签: java void


    【解决方案1】:

    void 不是类型,也不是返回类型:

    JLS 14.8你可以找到关于这个类型的注释:

    请注意 Java 编程语言不允许“强制转换为 void”-void 是 不是类型

    【讨论】:

    • 证明它是一种类型。不能证明它是一个返回类型。
    • @EJP,void 是一种类型,但不是返回类型。我已经改变了我的帖子。
    • JLS 以另一种方式声明它(JLS 8.4、18.1)和反证:局部变量声明被定义为“[final] Type VariableDeclarators ;”在 JLS 中。如果void 是一个类型,那么void someName; 将是一个有效的变量声明。
    • @Carlos,我错了 - 我发现官方说明 void 不是一种类型,感谢您指出这一点。
    【解决方案2】:

    Java Language Specificationsays that:

    [...] 每个变量和每个表达式都有一个可以在编译时确定的类型。该类型可以是原始类型或引用类型。

    void 不是valid type。但是,void 是一个有效的keyword,用于指示method does not return a value

    Void JavaDoc 还表示void 是关键字:

    Void 类是一个不可实例化的占位符类,用于保存对表示 Java 关键字 void 的 Class 对象的引用

    对比Integer JavaDoc

    Integer 类将原始类型 int 的值包装在一个对象中。 Integer 类型的对象包含一个类型为 int 的字段。

    Void 类代表void 关键字;而Integer 类代表int 类型

    【讨论】:

      【解决方案3】:

      引用:

      类型

      公共静态最终类类型
      表示基本 Java 类型 void 的 Class 对象。

      取自:http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Void.html

      还是我误解了这个问题?

      【讨论】:

        【解决方案4】:

        希望 class void 解释了为什么 void 是一种类型。

        Void 类是一个不可实例化的占位符类,用于保存 对表示 Java 关键字 void 的 Class 对象的引用。

        public final class Void extends Object
        

        【讨论】:

          【解决方案5】:

          是的,void 绝对是类型,意思是“无”。 顺便说一句,你的意思是C(C++,Objective-C,...)。 不能说任何语言,但在 C(C++、Objective-C、...)中,void 是一种类型。
          但它是特殊的数据类型。您不能声明 void 类型的变量。这与任何其他类型的 void 不同。 但是你可以声明指向 void 的指针。返回值为 void 的函数表示函数没有返回值,或者什么也不返回。恐怕所有可以使用 void 类型的情况。
          无效 * v; /** 将变量 v 声明为指向 void 的指针 */
          *v 用作表达式中的左值可以分配任何类型的值而无需类型转换。这就是将 void 类型引入语言的原因。

          您更新了您的问题,强调您在询问 Java。 Java 没有指针,也没有函数。 void 类型用于声明不返回任何内容的方法。

          【讨论】:

            【解决方案6】:

            任何类方法都必须指定返回类型。可以指定'void'关键字,指定它没有返回类型,例如:

            public void SetPantsSize(int width);
            

            还有一个 void 类: http://download.oracle.com/javase/6/docs/api/java/lang/Void.html

            【讨论】:

              【解决方案7】:

              Void 是大多数语言中的一种类型,鉴于典型的类型系统,将其视为指定“无”的类型是最有意义的。您没有说明您的语言,但例如,在 C# 中,void 关键字对应于 .NET framework void type

              【讨论】:

              • 还是在 Java 中?或任何其他定义 void 关键字的语言?
              • @Femaref:仍然是一种类型,准确地说是一种不完整的类型。
              • 我开枪了,我以为我在标签中看到了 C#。我将答案更新为“在大多数语言中”,根据我的经验,这是正确的。
              【解决方案8】:

              void 是 Java 语言中的一种类型(您可以直接在 Java 语言规范中阅读)。 然而,void 类型没有成员值,即没有具体值将具有 void 类型。因此void 用于表示方法在调用时不能返回值(即void 是“无值”的类型)。

              【讨论】:

              • 请至少指出我可以在 JLS 中阅读它的位置!我只发现void是一个ResultType,是一个Type还是一个void(JLS 8.4)
              • JLS在方法返回类型的设置中使用void作为类型:java.sun.com/docs/books/jls/third_edition/html/…
              • "返回类型...声明类型...,或声明方法无效。" - 它是一个类型 OR 一个 void。 “...返回类型为 R1 ...如果 R1 为 void” - 返回类型,而不是类型。
              猜你喜欢
              • 2021-08-13
              • 2020-02-05
              • 2014-01-05
              • 2010-09-12
              • 2011-03-30
              • 2019-09-23
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多