我有一个关于 Java 中 toString() 的查询,当我创建一个 toString 方法时,我被教导要这样做,例如:
public String toString(){
return....
}
我想知道我可以将其作为无返回值方法来执行,例如:
public void toString(){
System.out.println(....);
}
你不能。您最终会遇到编译时错误。The return type is incompatible
, 因为它继承自 Object#toString()
你可以喜欢
public void toMyString(){
}
因为它新的实例方法属于当前类:)
编辑(特定场景):
类型void
:
public void printOneMessage(){
System.out.println("printed .That's it");
}
类型return
:
public boolean printOneMessageAndLetMeknow(){
// some logic weather to print or not
System.out.println("printed .That's it");
return true;
}
另一个为return
public MyObjectType setSomeThingToObjectAndGiveMeBack(MyObjectType receiveObj){
receiveObj.setSomeProperty(someVal);
return receiveObj; //returning modified
}
这些只是举例。
您的类中的方法toString()
正在覆盖toString()
其父类的方法,所以不,您不能将覆盖方法的返回类型更改为不继承自原始返回类型的内容。
String toString()
继承自Object
类。定义 avoid toString()
会引发编译时错误,因为它是非法覆盖,因为方法签名匹配但返回类型不兼容(相同或协变)。
toString()
类的实现,您仍然可以toString()
在其对象上调用。这是因为默认情况下,每个类都从它扩展Object
并继承toString()
(除其他外)的基本实现。
当您定义toString()
自己的方法时,您基本上是在执行 OOP 中已知的方法覆盖,即提供您自己的方法实现来取代您从任何父类继承的方法实现。
合法的方法覆盖要求方法签名与您尝试覆盖的方法签名相匹配,并规定返回类型必须相同或协变,即您的类型必须可分配给原始返回类型。
对于 int、String 和 boolean 类型的任何方法,您都必须使用 return。如果是 void 方法,则不需要使用 return。