`
gaojingsong
  • 浏览: 1210090 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【反射的应用场景(一)】

阅读更多

一、应用场景

Redis缓存系统中使用Json字符串中存储一些缓存信息,减少数据库压力。但是数据库可能会定时更新,数据库只有只读权限,没法知道哪些数据库更新了,一种解决方案:定期遍历数据库数据,覆盖缓存,特点是快,缺点是没法知道哪些数据更新了  第二种解决方案:数据库中遍历的值和缓存系统的值进行比较,记录变化数据,此时可以使用数据库作为外层循环或者使用缓存系统作为外层循环,缺点是慢,优点是知道用户何时更新了哪些数据。

中心思想:比较VO转为的Json字符串中的值和对象中的值是否一致,不一致则更新Json字符串的值。

 

二、源代码

package demo.tt.p002;

 

import java.lang.reflect.Field;

 

import org.json.JSONObject;

 

import demo.tt.UserVO;

 

public class Demo {

 

/**

*    <!-- https://mvnrepository.com/artifact/org.json/json -->

<dependency>

   <groupId>org.json</groupId>

   <artifactId>json</artifactId>

   <version>20160212</version>

</dependency>

* 知识点:

* 1)字符串转Json对象

* 2)遍历对象的值

* 应用:比较Json字符串中的值和对象中的值是否一致,不一致则更新

* @param args

* @throws IllegalAccessException 

* @throws IllegalArgumentException 

* @author gaojingsong

*/

public static void main(String[] args) throws Exception {

UserVO vo = new UserVO();

vo.setName("gaojs");

vo.setAge(27);

vo.setId(200808512);

 

//VO对象转Json对象

JSONObject json = new JSONObject(vo);

System.out.println(json);

 

//字符创对象转Json对象

String str ="{\"id\":200808512,\"name\":\"gaojs\",\"age\":27,\"create_time\":\"20160722\"} ";

JSONObject json1 = new JSONObject(str);

System.out.println(json1);

 

 

System.out.println("--------反射的执行----------");

 

Class c = vo.getClass();

Field[] fields = c.getDeclaredFields();

 

for (Field field : fields) {

field.setAccessible(true);

String name = field.getName();

 

Object obj = field.get(vo);

 

System.out.println(obj +", json1   "+json1.get(name));

}

}

 

}

 

三、验证



 

 

 

 



 

 

 

  • 大小: 17.2 KB
  • 大小: 27.6 KB
  • 大小: 20 KB
0
0
分享到:
评论

相关推荐

    c# 反射应用几乎最全面的实例

    这个"c# 反射应用几乎最全面的实例"集合可能是为了展示反射的各种应用场景和用法。以下是对C#反射及其应用的详细解释。 反射的概念: 反射是.NET框架提供的一种能力,它允许代码在运行时分析自身,获取类型信息,...

    java反射机制应用

    #### 二、Java反射机制的应用场景及示例 ##### 1. 判断一个类是否是某个类的实例或子类 ```java Class&lt;?&gt; cls = Class.forName("com.example.Jdk"); boolean isInstance = cls.isInstance(new Jdk()); System.out....

    Java反射学习和反射的应用场景干货都在这里

    在本文中,我们将深入理解Java反射的概念,掌握其核心实现,并探讨它在实际开发中的应用场景。 一、Java反射定义 Java反射机制是在程序运行过程中,允许我们动态地获取类的属性、方法和构造器等信息,甚至能够在...

    C# 反射技术应用

    本文将深入探讨C#中的反射技术及其应用场景。 #### 二、反射基本概念 反射可以让我们在运行时获取.NET类型的所有信息,包括类、结构体、委托、接口和枚举等。通过反射,我们可以获取这些类型成员的详细信息,比如...

    详解Java 反射和反射的应用场景

    3. **反射的应用场景** - 动态加载类和对象:在不明确具体类名的情况下,可以通过字符串动态加载类并创建对象,例如插件系统。 - 运行时检查和调用私有成员:反射允许访问和修改私有字段和方法,这对于测试和调试...

    Java学习之反射机制及应用场景介绍

    反射机制在实际开发中有多种应用场景,例如: 1. **运行时动态类型操作**:在运行时,根据条件实例化不同的类或调用不同的方法。 2. **序列化和反序列化**:如`ObjectInputStream`和`ObjectOutputStream`在读写对象...

    Away3D学习02场景SkyBox和反射

    Away3D 提供了实现反射的机制,允许我们将场景的一部分投射到物体表面上,产生反射效果。实现反射通常涉及以下步骤: 1. 创建一个镜面材质(MirrorMaterial),它支持反射效果。 2. 将这个材质应用到需要反射的物体...

    JAVA 反射机制应用

    5. **反射的应用场景** - 动态代理:如Java的InvocationHandler接口,可以动态创建具有特定行为的对象。 - 数据库操作框架:如Hibernate,通过反射调用getter/setter方法实现对象与数据库记录的映射。 - 插件系统...

    Java 学习之反射机制及应用场景

    前言:  近公司正在进行业务组件化进程,其中的路由实现用到了Java的反射机制,...  JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方

    XML解析与反射应用联合.zip

    "XML解析与反射应用联合"的主题,意味着这个压缩包可能包含了一个示例项目,展示了如何结合XML解析和反射来实现灵活的配置和动态行为。例如,可能有一个XML配置文件定义了某些类的实例化和它们应执行的方法,然后...

    c#反射例子的用法(

    反射技术在实际开发中有很多应用场景,例如: - **动态加载和调用代码**:在运行时动态加载并执行特定的代码片段。 - **配置驱动的应用程序**:通过配置文件中的类型名动态创建和使用对象。 - **单元测试**:在测试...

    java的反射机制及其实际应用

    #### 三、实际应用场景 ##### 3.1 动态代理 反射机制可以用来创建动态代理类,这对于AOP(面向切面编程)非常有用。动态代理允许你在不修改原有代码的情况下增强功能,例如添加日志记录或事务管理。 ##### 3.2 ...

    java反射机制的原理及在Android下的简单应用

    通过理解反射机制的工作原理及其在Android开发中的应用,开发者可以更好地利用这一特性来优化和扩展应用程序的功能。然而,值得注意的是,反射操作可能会导致性能下降,并且可能会破坏封装性,因此在使用时需谨慎...

    反射电桥的原理和应用.zip

    在提供的文件中,"驻波电桥应用.pdf"可能包含更多关于如何将反射电桥应用于实际工作场景的详细案例和指导,例如如何设置实验条件,以及如何解读测量结果。"资料说明.txt"可能提供关于这些文件的详细信息,包括数据...

    C#反射(Reflection)的应用

    7. **应用场景**: 反射广泛应用于配置驱动的设计、序列化/反序列化、动态代理、插件架构、元数据驱动的编程以及对未知类型的操作等。 综上所述,这个压缩包提供了一个全面的反射学习平台,涵盖了从基本原理到实际...

    java反射应用的原理以及应用

    反射在Java中有很多实际的应用场景,比如在框架设计中,Spring框架就大量使用了反射来实现依赖注入;在运行时动态加载和执行代码,或者对未知类型的对象进行通用操作。此外,反射还常用于序列化、数据库ORM工具、...

    java反射应用详细介绍.rar

    Java反射的应用场景广泛,包括但不限于: 1. 动态代理:如Java自带的`java.lang.reflect.Proxy`,可以实现对目标对象的动态代理,用于AOP(面向切面编程)。 2. ORM框架:如Hibernate和MyBatis,它们使用反射来映射...

    一个基于Qt的反射功能的框架 QtReflectionFramework-master.7z

    本文将深入探讨一个基于Qt库实现的反射框架——QtReflectionFramework,帮助开发者更好地理解和利用反射功能在Qt应用中的潜力。 首先,理解QtReflectionFramework的核心概念是关键。这个框架旨在为Qt应用程序提供一...

Global site tag (gtag.js) - Google Analytics