确定对象是否是System.out.print / println方法的参数

时间:2016-10-11 21:56:13

标签: java

在我的班级SampleClass中,我希望它执行此类操作:当SampleClass的实例作为System.out.print()System.out.println()方法的参数包含在内时,对象自动调用自己的To_String()方法。

public class SampleClass{
    private int count;
    public SampleClass(){
         // maybe do something here?
    }
    private String To_String(){
        return Integer.toString(count);
    }
}

这样当我做的时候

SampleClass s = new SampleClass();
System.out.println(s);

可以自动将s.count字段的值打印为字符串,而不必执行System.out.println(s.To_String())。谢谢。

3 个答案:

答案 0 :(得分:5)

您不能这样做,但如果可见度为public,您可以覆盖Object.toString(),而不是

@Override
public String toString() {
    return Integer.toString(count);
}

然后System.out.println(s);将按照您的描述运作。

答案 1 :(得分:2)

您可以覆盖执行toString()时自动调用的System.out.println(sampleObject)方法。

public class SampleClass {
    private int count;
    public SampleClass(){
         // maybe do something here?
    }
    @Override
    public String toString(){
        return Integer.toString(count);
    }
}

然后

SampleClass s = new SampleClass();
System.out.println(s);

将按预期工作。

答案 2 :(得分:0)

如果您阅读println(Object x)的文档,则会说:

  

打印一个对象,然后终止该行。此方法首先调用 String.valueOf(x) 来获取打印对象的字符串值,然后就像调用print(String)然后调用println()一样。

如果您随后阅读String.valueOf(Object obj)的文档,则说:

  

返回:如果参数为null,则字符串等于" null&#34 ;;否则,返回obj.toString()的值。

这意味着System.out.println(s)对于非null s对象,与以下内容相同:

System.out.print(s.toString());
System.out.println();

您需要做的就是实施从班级Object继承的toString()方法:

@Override
public String toString() {
    return Integer.toString(count);
}

或者,如果您坚持使用自己的To_String()方法:

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