方法重载toString()

时间:2015-01-18 06:37:25

标签: java

您好我只是想知道是否可以在同一个类中使用多个toString()方法。两个不同的toString()方法打印不同的东西。例如:

public String toString(){
    return String.format("(%.1f%+.1fi)%n", real, imaginary);
}

public String toString(){
    return String.format("z=%.3f(cos(%.3f)+isin(%.3f))%n",real,imaginary,imaginary);
} 

3 个答案:

答案 0 :(得分:4)

不,你不能有两个具有相同名称和签名的方法。

在这种情况下,“签名”表示参数的数量及其类型。更改此设置将不允许您覆盖toString()两次,它只是使其成为常规方法。

public String toString(){
    return String.format("(%.1f%+.1fi)%n", real, imaginary);
}

public String toString( boolean fubar ){
    return String.format("z=%.3f(cos(%.3f)+isin(%.3f))%n",real,imaginary,imaginary);
} 

第二种方法具有不同的签名,因此它是合法的,但不会覆盖toString()

答案 1 :(得分:1)

您可以使用toString()方法,该方法接受一个参数来指示输出的预期格式。 假设您有3种格式。您可以拥有枚举,并根据您获得的值,以该格式打印/返回值。

编辑1

假设你有一个枚举

public enum PrintFormat{
    F1, F2, F3
}

和你要重载的toString()方法

public toString(PrintFormat format){
    switch(format){
        case F1:
           //return in a diff format
        case F2:
           //return in a diff format
        //so on so forth
    }
}

答案 2 :(得分:-1)

不,不可能在同一个Class

中覆盖多个toString()