我在eclipse中对此进行了测试,并没有给我任何例外。但是我无法指定值x。可以toString()接受一个参数(我知道下面我的例子不是最好的)?
Test.java
public class Test {
public String toString(int x){
return "Hey "+ x;
}
}
Main.java
public class Main {
public static void main(String[] args){
System.out.println(new Test());
}
}
答案 0 :(得分:4)
可
toString()
参与辩论吗?
是的,在这种情况下,您将拥有overloaded toString()
方法。
但是,在调用System.out.println(t)
时,无论如何都会调用Object#toString()
(您可以通过检查PrintStream#println(Object t)
方法的来源来验证这一点。)
要调用自定义.toString()
方法,您必须执行(例如):
System.out.println(t.toString(5));
答案 1 :(得分:2)
是的,但在这种情况下,您不会覆盖Object::toString
方法,只是创建自己的重载。
您的方法有效
public String toString(int x) {
return "Hey "+ x;
}
Check this question to clarify
要执行此功能,这将无效,因为您将致电Test.toString()
而不是Test.toString(int)
:
System.out.println(new Test());
创建一个实例并调用您的方法:
Test t = new Test();
System.out.println(t.toString(10);
输出:
Hey 10