天天看點

泛型list對象數組累加傳回一個總和對象

private <T> T toSumList(List<T> list){
        try {
            T t = (T) Class.forName(list.get(0).getClass().getName()).newInstance();
            Class<?> aClass = list.get(0).getClass();
            Field[] fields = aClass.getDeclaredFields();
            for(int i = 0; i < fields.length; i++){
                Field field = fields[i];
                field.setAccessible(true);
                String name = field.getName();
                double temp = 0.0;
                if(name.equals("id") || name.equals("year") || name.equals("pid")){
                    continue;
                }else {
                    for(int j = 0; j < list.size(); j++){
                        Object obj = null;
                        obj = field.get(list.get(j));
                        temp += Double.valueOf(obj.toString());
                    }
                    Field f = t.getClass().getDeclaredField(name);
                    f.setAccessible(true);
                    f.set(t, temp);
                }
            }
            return t;
        }catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }