qa22qa22 发表于 2013-2-1 12:11:56

按属性取方法名 java反射

//排序排名      sortGDTownIndex(result, "ForeignComplete", "ForeignCompleteNum");    Method ms = null;//比较接口是要用到全局变量    private void sortGDTownIndex(List result, String get, String set) {          Class c = ((GDTempTownIndex) result.get(0)).getClass();      Method[] mss = c.getMethods();      for (int i = 0; i < mss.length; i++) {            Method m = mss;            String name = m.getName();            if (name.startsWith("get") && name.endsWith(get)) {                ms = m;                break;            }      }      //过滤空的值      List addList = new ArrayList();      System.out.println("1result.size()=" + result.size());      System.out.println("mse()=" + ms.getName());      for (int i = 0; i < result.size(); i++) {            GDTempTownIndex t = (GDTempTownIndex) result.get(i);            try {//               System.out.println("t.name="+t.getTownName());//                  System.out.println("t.ms="+ms.getName());                System.out.println("t.value=" + ms.invoke(t));                if (ms.invoke(t) == null) {                  addList.add(t);                }            } catch (Exception ex) {                ex.printStackTrace();            }      }      result.removeAll(addList);      System.out.println("==result.size()=" + result.size());      System.out.println("addList.size()=" + addList.size());      Comparator comp = new Comparator() {            @Override            public int compare(Object o1, Object o2) {                GDTempTownIndex p1 = (GDTempTownIndex) o1;                GDTempTownIndex p2 = (GDTempTownIndex) o2;                int i = -1;                try {                  if ((Double) ms.invoke(p1) < ((Double) ms.invoke(p2))) {                        i = 1;                  } else if ((Double) ms.invoke(p1) > ((Double) ms.invoke(p2))) {                        i = -1;                  }                } catch (Exception ex) {                  ex.printStackTrace();                } finally {                  return i;                }            }      };      //排序      System.out.println("=============is=");      if (result.size() != 0) {            Collections.sort(result, comp);         }      for (int i = 0; i < mss.length; i++) {            Method m = mss;            String name = m.getName();            if (name.startsWith("set") && name.endsWith(set)) {                ms = m;            }      }      //设置排名      try {            for (int i = 0; i < result.size(); i++) {                GDTempTownIndex t = (GDTempTownIndex) result.get(i);                ms.invoke(t, new Double(String.valueOf(i + 1)));            }            result.addAll(addList);      } catch (Exception ex) {            ex.printStackTrace();      }    }
页: [1]
查看完整版本: 按属性取方法名 java反射