有时我会看到像这样声明的方法:
public MethodName() { ... }
其他时候,我看到用一个类声明的方法定义了它们返回的类型(?)。例如:
public ClassName methodName() { ... }
这有什么意义?为什么我必须指定返回类型?
答案 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
的情况下进行编译。