利用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);

java反射新的应用的更多相关文章

  1. 第28章 java反射机制

    java反射机制 1.类加载机制 1.1.jvm和类 运行Java程序:java 带有main方法的类名 之后java会启动jvm,并加载字节码(字节码就是一个类在内存空间的状态) 当调用java命令 ...

  2. Java反射机制

    Java反射机制 一:什么事反射机制 简单地说,就是程序运行时能够通过反射的到类的所有信息,只需要获得类名,方法名,属性名. 二:为什么要用反射:     静态编译:在编译时确定类型,绑定对象,即通过 ...

  3. java基础知识(十一)java反射机制(上)

    java.lang.Class类详解 java Class类详解 一.class类 Class类是java语言定义的特定类的实现,在java中每个类都有一个相应的Class对象,以便java程序运行时 ...

  4. java反射 之 反射基础

    一.反射 反射:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为 ...

  5. Java 8新特性终极指南

    目录结构 介绍 Java语言的新特性 2.1 Lambdas表达式与Functional接口 2.2 接口的默认与静态方法 2.3 方法引用 2.4 重复注解 2.5 更好的类型推测机制 2.6 扩展 ...

  6. Spring 4支持的Java 8新特性一览

    有众多新特性和函数库的Java 8发布之后,Spring 4.x已经支持其中的大部分.有些Java 8的新特性对Spring无影响,可以直接使用,但另有些新特性需要Spring的支持.本文将带您浏览S ...

  7. [Java] Java反射

    首先推荐三个十分有趣的网站: http://www.programcreek.com/simple-java/ http://tutorials.jenkov.com/ http://www.meet ...

  8. 【转】Java反射 之 反射基础

    一.反射 反射:Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为 ...

  9. 反射——Java反射机制

    反射概述 什么是反射? ①   反射的概念是由Smith在1982年首次提出的,主要指程序可以访问.检测和修改它本身状态或行为的一种能力. ②   JAVA反射机制是在运行状态中,对应任意一个类,都能 ...

随机推荐

  1. LoadRunner安装停在注册界面安装失败----解决办法之一

    今天下了个LoadRunner11.5玩玩,准备测手头上准备发布的项目性能,结果安装的时候,报错“Error Creating system registry entry”,在51testing搜索各 ...

  2. Bootstrap_排版_文字样式

    一.段落 段落是排版中另一个重要元素之一.在Bootstrap中为文本设置了一个全局的文本样式(这里所说的文本是指正文文本): 1.全局文本字号为14px(font-size). 2.行高为1.428 ...

  3. firefox插件poster的使用,发起自定义http请求

    快捷键:ctrl+alt+p 在开发WEB程序的时候,经常需要模拟http请求,接收服务器响应,从而检验程序的正确性. Firefox插件poster,可以模拟各种http请求,并详细设置请求参数,比 ...

  4. linxu安装OSX

    下载OS X Mavericks 10.9 Retail VMware Image安装vmware10.01打开unlock-all-v110,运行install.sh 打开vmx. 更新系统. 安装 ...

  5. HDOJ(HDU) 1718 Rank(水题、、、)

    Problem Description Jackson wants to know his rank in the class. The professor has posted a list of ...

  6. 一个linux下socket编程的例子,client连server

    关于socket编程,以下文章写得比较好:http://www.cnblogs.com/xudong-bupt/archive/2013/12/29/3483059.html 1. accept()函 ...

  7. Tomcat启动时报错:java.net.BindException: Permission denied <null>:80 【转载】

    本文转载自: http://blog.sina.com.cn/s/blog_4550f3ca0101g37l.html   问题起因:做负载均衡时需要将Web工程与Wap工程同时部署在一台Suse服务 ...

  8. TreeSet具体应用

    知识是用来运用的,一辈子用不上的等于没学,学了忘了的等于没学,学了不会用的等于没学 //TreeSetDemo2.java package saturday2; import java.util.Ha ...

  9. git commit error about 'vi'

    error: There was a problem with the editor 'vi'. Please supply the message using either -m or -F opt ...

  10. 零基础学习IOS开发(二)- 使用cocos2d-x3.0 执行Hello world

    关于开发框架,依据网上检索来的信息,感觉cocos2d-x的ios游戏开发框架非常不错,并且有非常强的可移植性,因此打算尝试一下. 截止写下此文章,最新的cocos2d-x的版本号为v3.0稳定版(几 ...