資源描述:
《發(fā)射實現(xiàn)tostring方法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、在Java的開發(fā)過程中,編寫對應(yīng)數(shù)據(jù)庫表信息的entity是必須的,很多時候為了調(diào)試我們很有必要重寫entity的toString方法,為我們返回有用的entity信息,一般是希望輸出entity的屬性名對應(yīng)的屬性值。toString方法可以是這個樣子的:@OverridepublicStringtoString(){return"username:"+this.getUsername()+"&age:"+this.getAge();}沒什么,無非是手動拼裝一把而已。不過有的時候項目大了,幾百個entity都去手動拼裝一把,實在有點讓人心煩,更
2、何況有些變態(tài)的entity一來就是百十個屬性,對于這種情況,這樣拼裝無疑是枯燥而且耗時的。有沒有簡單一點的方法呢?小弟近來想到一個比較拙劣的方法,分享一把,有需要的可以看看,一個簡單的工具類:packagecom.huawei.zhangbo;importjava.lang.reflect.Field;importjava.lang.reflect.Method;publicclassToStringUtil{publicstaticStringtoString(Entityentity,String...fieldName){Classcls
3、=entity.getClass();StringBufferbuffer=newStringBuffer(cls.getSimpleName()+":");try{//不獲取私有方法Method[]methods=cls.getMethods();if(null!=fieldName&&fieldName.length!=0){for(Methodmethod:methods){Stringmn=method.getName();for(Stringfn:fieldName){20currencydeposit,weprescribeapas
4、sonaregularbasis,qilucardaccountonaregularbasis),certificatebondsandsavingsbonds(electronic);3.notdrawnonabanksavingscertificate,certificatebondsapplyformortgageloans,acceptingonlythelenderif(mn.equalsIgnoreCase("get"+fn)){Stringvalue=method.invoke(entity).toString();buffer.
5、append(mn+"="+value+"&");}}}}else{//得到所有fieldField[]fields=cls.getDeclaredFields();for(Methodmethod:methods){Stringmn=method.getName();for(Fieldfield:fields){Stringname=field.getName().toString();if(mn.equalsIgnoreCase("get"+name)){Stringvalue=method.invoke(entity).toString(
6、);buffer.append(name+"="+value+"&");}}}}}catch(Exceptione){e.printStackTrace();}returnbuffer.substring(0,buffer.length()-1).toString();}}小小的解釋一把,非常簡單,該方法有兩個參數(shù),Entity,String...,Entity是我自己寫的一個空接口,和Serializable接口一樣起一個標(biāo)識的作用,標(biāo)識實體類,很明顯如果你的實體類不實現(xiàn)這個接口就不能使用我的工具類。我這樣搞有我20currencydepos
7、it,weprescribeapassonaregularbasis,qilucardaccountonaregularbasis),certificatebondsandsavingsbonds(electronic);3.notdrawnonabanksavingscertificate,certificatebondsapplyformortgageloans,acceptingonlythelender的理由,如果閑麻煩完全可以用Object取代之。第二個參數(shù)String...,即String類型的參數(shù),這樣的寫法具有靈活性,你可以不傳
8、這個參數(shù),也可以傳一個或者多個,最終Java會把你的參數(shù)封裝成String類型的數(shù)組,為什么不直接傳String類型的數(shù)組,還搞這些花里胡哨的,已經(jīng)說