為自定義物件新增 toString() 方法
假設你已定義以下 Person
類:
public class Person {
String name;
int age;
public Person (int age, String name) {
this.age = age;
this.name = name;
}
}
如果你例項化一個新的 Person
物件:
Person person = new Person(25, "John");
稍後在程式碼中使用以下語句來列印物件:
System.out.println(person.toString());
你會得到類似於以下的輸出:
Person@7ab89d
這是 Object
類中定義的 toString()
方法的實現結果,Object
類是 Person
的超類。Object.toString()
的檔案說明:
類 Object 的 toString 方法返回一個字串,該字串由物件為例項的類的名稱,符號字元“@”以及物件的雜湊碼的無符號十六進位制表示組成。換句話說,此方法返回一個等於值的字串:
`getClass()`.getName() + '@' + Integer.toHexString(`hashCode()`)
因此,對於有意義的輸出,你必須覆蓋 toString()
方法:
@Override
public String toString() {
return "My name is " + this.name + " and my age is " + this.age;
}
現在輸出將是:
My name is John and my age is 25
你也可以寫
System.out.println(person);
實際上,println()
隱含地在物件上呼叫 toString
方法。