在我的班级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())
。谢谢。
答案 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();
}