此外,构造函数能返回什么吗?或者我只能使用“
return;
”而没有任何表达式跟随它吗?return;
”而没有任何表达式跟随它吗?此外,构造函数可以返回什么吗?
不行。
JLS - http://java.sun.com/docs/books/jls/second_edition/html/statements.doc.html#6767
带表达式的return语句 必须包含在声明要返回一个值的方法中(§8.4)或者会出现编译时错误。
我只能使用“return;”而没有任何表达式跟随吗?
是的。
JLS - http://java.sun.com/docs/books/jls/second_edition/html/statements.doc.html#6767
一个没有表达式的返回语句必须包含在声明为不返回任何值的方法(§8.4)或构造函数(§8.8)的主体中。
return语句将控制返回给方法(§8.4, §15.12)或构造函数(§8.8, §15.9)的调用者。
ReturnStatement:
return Expressionopt;没有Expression的return语句必须包含在使用关键字void声明不返回任何值的方法的主体中(§8.4),或包含在构造函数(§8.8)的主体中。如果return语句出现在实例初始化程序或静态初始化程序中(§8.7),则会发生编译时错误。没有Expression的return语句试图将控制权转移到包含它的方法或构造函数的调用者。
要精确,没有Expression的return语句始终会突然完成,原因是没有返回值的返回。
请注意,这明确指出您可以在构造函数中使用return语句,但限制它只能用于构造函数和方法。
return
会突然完成,如果你在finally
块中放置一个return
,则从相应的try
块抛出的任何异常或返回的值都将消失得无影无踪。 - biziclopcatch(Exception e) {}
和finally { return; }
并没有更复杂的区别,而且不要忘记后者会覆盖你可能已经有的任何正常返回值。 - biziclopreturn
语句可以出现在方法或构造函数的任何位置。
如果方法有返回类型,return
后面应该跟上与其类型兼容的值。如果方法是void,则不返回任何内容。
构造函数根本没有返回类型(根据定义)。因此,如果您在构造函数中编写return
语句,则不应在其后面跟任何值。
在返回类型为void的方法中,您可以使用不带值的return语句。但在其他方法中则不行。
例如:
public void test(String s) {
if (s.equals("")) {
return;
}
}
我不确定return语句可以在哪里使用(或者规范确切地说了什么)。它们最常用于方法内返回值(或以无返回值结束方法)。
构造函数不能返回任何值。调用构造函数将使VM为您创建的对象分配内存大小,然后调用对象内的适当构造函数,这是与调用方法的过程不同的过程。可能可以使用return语句,但是不能从构造函数本身返回任何值。
要从构造函数“返回”信息(更恰当地说,指示在构建过程中出现问题),可以使用异常。