Java - toString override issue


Java中的類別都繼承了Object類別,而toString根據Java API的說明為

"Returns a string representation of the object."

因此,做了個簡單的範例如下:
  1. public class MyClass {
  2. public static void main(String args[]){
  3. MyClass obj = new MyClass();
  4. System.out.println(obj);
  5. }
  6. }

若直接print class所生成的object內容,將會如下面預設的訂定

 getClass().getName() + '@' + Integer.toHexString(hashCode())

而可以得到物件實體的內容為MyClass@4ab8fba5

雖然有了這個基本概念,但這邊我們主要是探討override toString的使用 ,為什麼我們

要override呢?也許我們可以思考,當我們要記錄此object的生成時 ,我們可以組織自己

print出該object生成format至log內

  1. public class toString_override {
  2. public static void main(String args[]){
  3. toString_override obj = new toString_override("Zhibin", "Huang");
  4. System.out.print(obj);
  5. }
  6. }
  7. class toString_override{
  8. private String firstname;
  9. private String lastname;
  10. public toString_override(String firstname, String lastname){
  11. this.firstname = firstname;
  12. this.lastname = lastname;
  13. }
  14. public String toString(){
  15. return "My name is "+lastname+" "+firstname;
  16. }
  17. }

此時印出class object內容,已經是我們所自訂的toString method所定義的format
My name is Huang Zhibin
如此一來,每當我們做該類別的初始化時,便可以寫入自訂格式的紀錄!

留言