为什么必须在Java中指定方法返回类型?

时间:2014-08-09 23:39:22

标签: java oop types

有时我会看到像这样声明的方法:

public MethodName() { ... }

其他时候,我看到用一个类声明的方法定义了它们返回的类型(?)。例如:

public ClassName methodName() { ... }

这有什么意义?为什么我必须指定返回类型?

2 个答案:

答案 0 :(得分:3)

是的,您始终必须指定方法返回类型。你必须这样做是因为Java 强和静态类型,这意味着编译器必须在编译期间知道所有表达式的类型。

你看到的看起来像没有返回类型的方法实际上是类的constructor,使用它你可以创建你的类的实例。

答案 1 :(得分:1)

当你有一个构造函数时,它没有返回类型,从技术上讲,签名是<init>(Lpackage.Type;)V,其中V代表void。它不会返回该类型的对象,而是采用该类型的对象并对其进行初始化。


在JVM级别,返回类型是签名的一部分。如果使用类似

的方法编译程序,请考虑使用此方法
public static long zero() { return 0; }

但是你后来重新编译了这个方法,但没有像这样调用它的方法。

public static int zero() { return 0; }

使用旧代码编译的方法将无法找到编译它们的方法。这是因为这些方法是在假设返回long的情况下编译的,它们甚至可能无法在返回int的情况下进行编译。