首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

按属性取方法名 java反照

2012-12-22 
按属性取方法名 java反射//排序排名sortGDTownIndex(result, ForeignComplete, ForeignCompleteNum)M

按属性取方法名 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[i];            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[i];            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();        }    }

热点排行