toString()方法可以在Java中获取参数吗?

时间:2015-12-21 11:28:12

标签: java

我在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());


      }
}

2 个答案:

答案 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