按属性取方法名 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]