以下问题:
fraction r1=new(1,2)
system.out.println(r1)
输出:
1/2
有没有人知道强制对象返回特定字符串的方法,而不是调用object.toString()函数并避免输出类似class.fraction@xxxxx的内容。
答案 0 :(得分:6)
在Java中调用System.out.print(o)
时,会自动调用toString()
o
方法。在你的fraction
课程中覆盖了这种方法,你应该好好去。
答案 1 :(得分:3)
您始终可以覆盖toString()
:
@Override
public String toString(){
return "This Object";
}
Java平台中的所有类都是Object的后代,这就是为什么任何类的任何对象(甚至是您创建的对象)都可以访问Object的toString()
方法,如下所示:
public String toString(){
getClass().getName() + '@' + Integer.toHexString(hashCode());
}
默认情况下,当你调用toString()
时会调用{p> System.out.println()
,但它只是一个常规的继承方法,没有什么能阻止你自由地覆盖它。
请参阅Oracle网站上的this explanation。
答案 2 :(得分:1)
覆盖Object.toString()
班级中的Fraction
public class Fraction {
private int numerator;
private int denominator;
public Fraction(int n, int d) {
this.numerator = n;
this.denominator = d;
}
@Override
public String toString() {
// String representation of Fraction
return numerator + "/" + denominator;
}
}
toString()
是为数不多的方法之一(例如equals()
,hashCode()
等),其中 隐式调用 程序化情况,如(只是命名一些)
println()
Collection
个对象(在所有元素上调用toString()
) strObj = "My obj as string is " + myObj;
)