问题描述:

课程Course(字段非常多,一个一个修改不现实)修改

解决思路:

1.获得根据id,返回oldCourse

2.前端传过来的json字段String course,经过特殊处理,再使用GsonBuilder转化为curCourse

接着,使用反射遍历字段,将curCourse的其他字段值更新至oldCourse

//将不用特殊处理的course字段更新

private Course parseDetail(Course curCourse,Course oldCourse) {

Field[] fields = curCourse.getClass().getDeclaredFields();

for (Field field : fields) {

field.setAccessible(true);

try {

if(!field.getName().equals("serialVersionUID")&&field.get(curCourse)!=null) {

field.set(oldCourse,field.get(curCourse));

}

} catch (Exception e) {

e.printStackTrace();

}

field.setAccessible(false);

}

return oldCourse;

}

3.其他用法:可以使用反射触发set方法

传入类名和json字符串可使用反射进行任何共有的set方法进行赋值

/**

* 对某一条元数据进行修改

*

* @param entity 元数据实体名

* @param item 修改的条目

* @return boolean

* @date 18/08/08

*/

@SuppressWarnings({"unchecked"})

public boolean saveMetadataChange(String entity, String item) {

try {

Class c = this.entities.get(entity.substring(0, 1).toUpperCase() + entity.substring(1));

Object obj = gson.fromJson(item, c);

this.getClass().getMethod("add" + entity.substring(0, 1).toUpperCase() + entity.substring(1), c).invoke(this, obj);

return true;

} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return false;

}

java 反射遍历_java使用反射遍历类的字段相关推荐

  1. java 反射 性能_java高性能反射及性能对比

    java编程中,使用反射来增强灵活性(如各类框架).某些抽象(如各类框架)及减少样板代码(如Java Bean). 因此,反射在实际的java项目中被大量使用. 由于项目里存在反射的性能瓶颈,使用的是 ...

  2. java list 删除 遍历_Java list利用遍历进行删除操作3种方法解析

    Java list利用遍历进行删除操作3种方法解析 这篇文章主要介绍了Java list利用遍历进行删除操作3种方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需 ...

  3. java 反射模式_java 设计模式——反射机制的应用

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

  4. java集合的遍历_Java集合之遍历

    在Java开发中,集合,可以说使我们必然要使用到的一个框架.对集合的遍历也是我么经常要进行的操作,而遍历操作又有多种,下面就对集合遍历进行以下总结. 一.List.Set的遍历 List与Set都继承 ...

  5. java中map如何实现遍历_Java中如何遍历Map对象的4种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  6. Java木乃伊枪_java核心技术反射

    类加载器: 用来加载通过javac编译成的.class文件.jvm虚拟机当中的类加载器负责加载这些编译好的类字节文件,先经过一系列的处理,然后缓存到我们的JVM虚拟机中.供程序随时使用. 反射实现的基 ...

  7. java 反射 动态_java实现反射,动态配置

    标签://java 实现反射 //首先定义一个接口Ishow.java public interface Ishow(){ void show(String str); } //建立一个demo.ja ...

  8. java entryset循环_Java之Map遍历方式性能分析:ketSet 与 entrySet

    keySet():将Map中所有的键存入到Set集合中.因为set具备迭代器,所以可以以迭代方式取出所有的键,再根据get方法获取每一个键对应的值,其仅能通过get()取key. entrySet() ...

  9. java 树 广度优先遍历_Java二进制搜索树遍历操作的详细描述[前,中,后,层次,广度优先遍历]...

    本文介绍了Java二进制搜索树遍历操作. 与您分享以供参考,如下: 前言: 在Java Binary Search Tree Basics的上一节中,我们了解了该树及其相关知识,并对Binary Se ...

  10. java 调用弗雷_JAVA API(一)String类和StringBuffer类

    1.String类和StringBuffer类 在程序中经常会用到字符串,所谓的字符串就是指一连串的字符,它是由多个单个字符连接而成的.字符串中可以包含任意字符,这些字符必须包含在一对双引号" ...

最新文章

  1. redis界面管理工具phpRedisAdmin 安装
  2. 语音写出(wavwrite)
  3. java nio 追加写文件_Java NIO在文件末尾追加数据
  4. C++类静态成员与类静态成员函数
  5. OpenShift 4 - CRC(Codeready Container)个人单机版 OpenShift 环境
  6. FKGE:合格的知识图谱嵌入已经学会保护隐私啦!
  7. php对html加密解密,PHP Mcrypt和HTML5加密API加密/解密
  8. 从dump看硬件问题
  9. RequestsLibrary库入门介绍
  10. 隐马尔科夫模型(HMM)
  11. 统计学原理 数值型数据的整理与展示
  12. 杭州天目山路招PHP,杭州地铁3号线汽车西站站开始主体施工 天目山路部分路面要开挖了...
  13. 卫星移动通信现状与未来发展
  14. 解决Ubuntu 键盘输入一直大写的问题
  15. 在来一次 快转存哦
  16. Hack The Box——Traceback
  17. 什么是Kusama (KSM)以及与波卡的区别
  18. Hash签名算法入门
  19. 前端工程化精讲第七课 低代码工具:如何用更少的代码实现更灵活的需求?
  20. c语言长方体体积float,如何在C语言中实现长方体体积的计算?

热门文章

  1. 从大数据到安全大数据分析
  2. 创业还需要开发 App 么?
  3. base64 数据处理
  4. secureCRT常用设置
  5. 成为顶尖机器学习算法专家需要知道哪些算法?
  6. 数据结构Java实现05----栈:顺序栈和链式堆栈
  7. DB2安装过程中可能遇到的错误
  8. matlab m 文件例子,一个简单OFDM例子(matlab m文件)
  9. mysql中tonumber函数_Oracle数据库之oracle的TO_NUMBER函数
  10. voliate修饰数组有作用吗_Arrays.asList()真的就把数组转换为了List集合吗?