zoukankan      html  css  js  c++  java
  • java反射新的应用

    利用java反射动态修改运行中对象的私有final变量,不管有没有get方法获取这个私有final变量。

    spring aop 本质是cglib,动态代理

    可以做很多事情

    query.addCriteria(criteria);
                queryCount.addCriteria(criteria);
                Class<?> queryClassType = query.getClass();
                Class<?> queryCountClassType  = queryCount.getClass();
                try {
                    Field field = queryClassType.getDeclaredField("criteria");
                    field.setAccessible(true);
                    Field fieldQueryCount = queryCountClassType.getDeclaredField("criteria");
                    fieldQueryCount.setAccessible(true);
                    
                    try {
                        System.out.println(field.get(query));
                        Map<String, Criteria> mapCriteriaTemp = (Map<String, Criteria>) field.get(query);
                        Criteria criteriaTemp = mapCriteriaTemp.get(null);
                        mapCriteriaTemp.remove(null);
                        mapCriteriaTemp.put("temp", criteriaTemp);
                        field.set(query, mapCriteriaTemp);
                        System.out.println(field.get(query));
                        
                        System.out.println(fieldQueryCount.get(queryCount));
                        Map<String, Criteria> mapCountCriteriaTemp = (Map<String, Criteria>) fieldQueryCount.get(queryCount);
                        Criteria criteriaCountTemp = mapCountCriteriaTemp.get(null);
                        mapCountCriteriaTemp.remove(null);
                        mapCountCriteriaTemp.put("temp", criteriaCountTemp);
                        fieldQueryCount.set(queryCount, mapCountCriteriaTemp);
                        System.out.println(fieldQueryCount.get(queryCount));
                    } catch (IllegalArgumentException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IllegalAccessException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                } catch (NoSuchFieldException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (SecurityException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
                query.addCriteria(criteriaOrderBy);
                
                queryCount.addCriteria(criteriaCount);
    View Code
  • 相关阅读:
    iosopendev配置
    按Home键切换到后台后会触发libGPUSupportMercury.dylib: gpus_ReturnNotPermittedKillClient导致crash
    iphone图片简单处理
    iPhone开发小工具
    iphone开发设置默认字体
    NSString+TimeCategory
    UIButton zoomin pressed
    Centos7下卸载docker
    如何清理Docker占用的磁盘空间
    美国VPS推荐1GB 50GB可以win
  • 原文地址:https://www.cnblogs.com/usual2013blog/p/4061806.html
Copyright © 2011-2022 走看看