可以在toString方法中使用void

时间:2014-05-04 19:24:10

标签: java methods tostring

我正在创建一个程序,但我想直接使用System.our.println(ClassName.toString())从toString方法打印字符串,

相反,我只想写ClassName.toString();并打印输出。

3 个答案:

答案 0 :(得分:1)

,因为如果您想调用toString之类的ClassName.toString()方法,则表示您要创建static ClassName类中的toString()方法,意味着您是hiding toString类的静态方法的Object类的实例方法,但Java规则表示您无法使用静态方法隐藏实例方法

Java规范参考:jls 8.4.8.2. Hiding (by Class Methods)

  

如果静态方法隐藏了实例方法,则为编译时错误。

答案 1 :(得分:0)

toString()方法是Object类中可用的方法。

java中的任何类,如果它没有扩展任何父类,那么它将内部的Object类作为父类。

toString()方法在Object类

中不是最终的

所以这意味着我们可以覆盖任何子类中的toString()方法。

并且如果内置类型的重写方法的返回类型应该是相同的,并且它应该是相同的,如果是自定义对象则应该是父类。

所以在toString()的情况下,它的返回类型是String,所以没有人可以替换返回类型的String。

因此更改它会产生编译时错误。

因此,为了实现您的方案,您可以在最坏的情况下执行以下操作

@Override
    public String toString() {
    System.out.println("your string");
        return super.toString();
    }

如果类名为A

,则使用此类的对象调用此方法

然后

 A a = new A();
a.toString();

将使用其正文自动在控制台上打印内容。

答案 2 :(得分:0)

我觉得其他答案已经涵盖了“不要那样做”,但这是我的“试试这个”。但是如果你只是想简单地完成打印toString()输出的简洁方法,你可以做这样的事情:

public class PrintMe {
    private String data = "Just an example";

    @Override
    public String toString() {
        return data;
    }

    public void print() {
        System.out.println(toString());
    }

    public static void main(String[] args) {
        PrintMe p = new PrintMe();
        p.print();
    }
}

输出: Just an example