編程中踩過的坑
阿新 • • 發佈:2018-08-09
pen () 實體 就是 顯示 ssi bgcolor bug 實體類
從今天開始在這紀錄我編程過程中所遇到的坑,這些坑是完全可以避免的,分享出來希望大家不要再入坑,大家也可以分享出踩過的坑
1、生成文件的坑 |
編程過程中生成文件是一個很常見的需求,為了圖方便我使用了反射去獲取所有的字段,再一次寫入文件中,我以為這是個很巧的方式,結果後來發現BUG了,花了很長的時間去找到這個根源所在,話不多說先貼出我的代碼
protected static String getLineString(Object obj) throws IllegalAccessException, IOException{ StringBuilder sb = new StringBuilder(); Field[] fields = obj.getClass().getDeclaredFields(); boolean access = false; for(int i = 1; i < fields.length; i++){ access = fields[i].isAccessible(); if(!access){ fields[i].setAccessible(true); } if(fields[i].get(obj) == null || fields[i].get(obj).equals("null")){//null不顯示 }else { sb.append(String.valueOf(fields[i].get(obj))); } if(i != fields.length -1) {//最後一行不加 sb.append(SEPARATOR); } if(!access){ fields[i].setAccessible(false); } } return sb.toString(); }
後來我去讀文件的時候發現讀一個字段一直讀得都不對,這可害苦了我,後來我才想起來是不是我生成文件的地方有問題,把實體類和數據庫字段順序一比對,果然,其中有幾個字段和數據庫字段的順序不一樣。下次千萬不能因為省事去用反射了,還是一個個字段的寫吧,而且這樣也有好處,就是後來加字段和改字段了都不會受到影響,不然另外一個同事某天修改了這塊你不知道,那問題可就大了。
編程中踩過的坑