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
  • 相关阅读:
    解决AD原理图中无法输入中文的问题
    [编程题-京东]小球的距离
    [编程题-京东]上台阶
    [编程题-搜狐]发奖金
    [编程题-搜狐]扎金花
    [leetcode]最长递增序列
    [编程题-搜狐]马戏团
    [编程题-蘑菇街] 投篮游戏
    [编程题-蘑菇街]聊天
    [编程题-蘑菇街]回文串
  • 原文地址:https://www.cnblogs.com/usual2013blog/p/4061806.html
Copyright © 2011-2022 走看看