之前着急写了一段代码,其中除了传入的类型不同之外,代码执行逻辑是一致的,所以我想优化一下,这里记录一下优化过程。
以前代码大致长这样
优化提取公共代码如下,主要使用到了泛型和反射的功能
现在就长这样了
优化的核心代码如下
public <T> List<T> resultDataList (List<T> list,List<Integer> collect) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
List<T> result = new ArrayList<>();
for(int i=0;i<list.size();i++) {
T t= list.get(i);
String str = JSONObject.toJSONString(t);
JSONObject json =JSONObject.parseObject(str);
String mj = json.getString("mj");
String xcrq = json.getString("xcrq");
boolean contains = collect.contains(Integer.parseInt(json.getString("id")));
Class<? extends Object> class1 = t.getClass();
Field field = class1.getDeclaredField("isExpire");
field.setAccessible(true);
//1 取消提醒了 0 没有取消提醒
field.set(t,contains?"1":"0");
result.add(t);
}
return result;
}