Java - toString override issue


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

"Returns a string representation of the object."

因此,做了個簡單的範例如下:

public class MyClass {
   public static void main(String args[]){
     MyClass obj = new MyClass();
     System.out.println(obj);
   }
}

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

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

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

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

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

print出該object生成format至log內

public class toString_override {
 
public static void main(String args[]){
        toString_override obj = new toString_override("Zhibin", "Huang");
        System.out.print(obj);
    }
}

class toString_override{
 
 private String firstname;
 private String lastname;
 
 public toString_override(String firstname, String lastname){
  this.firstname = firstname;
  this.lastname  = lastname;
 }
 
 public String toString(){
  return "My name is "+lastname+" "+firstname;
 }
}

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

留言