Java编程,如何在不调用函数的情况下使对象返回值?

时间:2013-06-18 22:09:28

标签: java

以下问题:

fraction r1=new(1,2)
system.out.println(r1)

输出:

1/2

有没有人知道强制对象返回特定字符串的方法,而不是调用object.toString()函数并避免输出类似class.fraction@xxxxx的内容。

3 个答案:

答案 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()
  • 与String (如strObj = "My obj as string is " + myObj;
  • 串联