java中使用反射擷取pojo(實體)類的全部欄位值

來源:互聯網
上載者:User

標籤:功能   stat   str   ret   except   public   super   統一   res   

       說起反射。不得不說它實在是太強大了,通過反射就能夠輕輕鬆鬆拿到各種東東,假設你想在項目中解除對某個類的依賴,能夠考慮用反射。


       今天跟大家分享的是通過java中的反射,擷取pojo類的全部欄位值。


       為什麼要做這個操作的呢?主要是為了重寫實體類的toString方法。有人會說。直接重寫toString方法。返回欄位.toString()的字串不就可以了。

這麼做的確能夠。可是假設你的pojo類有上百個,上千個,你還要一個一個改嗎?所以我們須要從新的方向去解決。


       由於我們全部的pojo類。都繼承一個IdEntity的pojo類。

它僅僅有一個id屬性,所以假設我在IdEntity中重寫了toString方法,那麼其它全部繼承與IdEntity的pojo類都不用再寫了。並且也保證了格式的統一。這裡要反射出pojo類的全部欄位值,假設欄位是其它pojo類的對象時,也要拿過來把全部屬性都列出來。

package entity.qx;import java.lang.reflect.Field;/** * @author : 崔成龍 * @group : tgb8 * @Date : 2014-4-9 下午8:37:22 * @Comments : 用於重寫實體類的toString方法 * @Version : 1.0.0 */public class EntityToString{/** * @MethodName : getString * @Description : 擷取類中全部屬性及屬性值 * @param o *            操作對象 * @param c *            操作類。用於擷取類中的方法 * @return */public static String getString(Object o, Class< ? > c ){String result = c.getSimpleName( ) + ":";// 擷取父類。推斷是否為實體類if ( c.getSuperclass( ).getName( ).indexOf( "entity" ) >= 0 ){result +="\n<" +getString( o , c.getSuperclass( ) )+">,\n";}// 擷取類中的全部定義欄位Field[ ] fields = c.getDeclaredFields( );// 迴圈遍曆欄位,擷取欄位相應的屬性值for ( Field field : fields ){// 假設不為空白。設定可見度,然後返回field.setAccessible( true );try{// 設定欄位可見,就可以用get方法擷取屬性值。

result += field.getName( ) + "=" + field.get( o ) +",\n";}catch ( Exception e ){// System.out.println("error--------"+methodName+".Reason is:"+e.getMessage());}}if(result.indexOf( "," )>=0) result = result.substring( 0 , result.length( )-2 );return result;}}

       然後在IdEntity中,重寫toString方法就可以:

@Overridepublic String toString(){return EntityToString.getString(this,this.getClass( ));}

       例如以下:

 

       這樣格式統一了,同一時候避免了由於代碼修改太多而導致出錯率上升。最重要的是能夠節省大量的時間。以最小的代價完畢修改功能,這是非常有必要的。

       

java中使用反射擷取pojo(實體)類的全部欄位值

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.