1. 程式人生 > >編程中踩過的坑

編程中踩過的坑

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();
    }

後來我去讀文件的時候發現讀一個字段一直讀得都不對,這可害苦了我,後來我才想起來是不是我生成文件的地方有問題,把實體類和數據庫字段順序一比對,果然,其中有幾個字段和數據庫字段的順序不一樣。下次千萬不能因為省事去用反射了,還是一個個字段的寫吧,而且這樣也有好處,就是後來加字段和改字段了都不會受到影響,不然另外一個同事某天修改了這塊你不知道,那問題可就大了。

編程中踩過的坑