我正在创建一个程序,但我想直接使用System.our.println(ClassName.toString())从toString方法打印字符串,
相反,我只想写ClassName.toString();并打印输出。
答案 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