5

所以我想测试Void类型然后我写了这个简单的程序:

package ehsan;

public class NumTest {
    public static Void main(String[] args) {
        System.out.println("Hello, World!");
        return null; /* The compiler forced me to do so. I just can't realize what is the point in returning in Void type!? */
    }
}

所以现在当我想编译时,编译器会抱怨:

main method must return a value of type void

为什么编译器看不到我什么都没有返回并且正在使用Void

4

4 回答 4

4

您应该使用void(小写v)而不是Void对象。Void对象不会像int/那样进行自动装箱Integer,请参阅Java 语言规范以获取自动装箱对象的列表。

Void不是 的包装器void,它只是一个名称非常相似的对象,因此可以在需要指定返回类型的地方使用(例如,例如Callable<T>),它仅用于文档目的并解决一些泛型类返回类型。

第二个用例是反射(当你想检查一个void函数的返回值时,你会得到Void.TYPE)。

正确的行是:

public static void main(String[] args)
于 2016-07-07T07:15:42.450 回答
2

Void是一个类类型,所以编译器希望你为它返回一个值。您应该使用void小写字母。

你的错误原因:

main 方法必须返回一个 void 类型的值

是由于 main 方法应始终返回的规则void- 这是 java 关键字而不是类类型。

于 2016-07-07T07:16:12.907 回答
1

你必须使用void而不是Void

像这样:

public static void main(String[] args)
于 2016-07-07T07:16:16.750 回答
1

打字错误。

void不是Void

碰巧Void是java中的一个类。来自文档

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

于 2016-07-07T07:16:27.250 回答