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
  • 相关阅读:
    @Value不能给静态变量直接赋值问题
    jmeter测试http请求
    SqlServer单步调试
    mysql锁住 Lock wait timeout exceeded; try restarting transaction
    django在model中添加字段报错
    django admin下拉列表不显示值,显示为object的处理
    (原创推荐文章)kerberos服务器端与客户端
    kafka安装与测试
    Linux shell判断文件和文件夹是否存在
    df -h 卡死 如何解决
  • 原文地址:https://www.cnblogs.com/usual2013blog/p/4061806.html
Copyright © 2011-2022 走看看