一、背景

在框架层、业务通用处理层经常会使用反射来做一些统一的处理,但是反射往往效率很低

二、解决方法

2.1 缓存

可以用ConcurrentMap懒缓存Class、Field、Method等元数据,减少ClassLoader的寻找时间

可以参考spring的ReflectionUtils工具

 /*** Cache for {@link Class#getDeclaredMethods()} plus equivalent default methods* from Java 8 based interfaces, allowing for fast iteration.*/private static final Map<Class<?>, Method[]> declaredMethodsCache = new ConcurrentReferenceHashMap<>(256);/*** Cache for {@link Class#getDeclaredFields()}, allowing for fast iteration.*/private static final Map<Class<?>, Field[]> declaredFieldsCache = new ConcurrentReferenceHashMap<>(256);

2.2 使用并行、多线程方法处理

可以借助jdk1.8的parallelStream并行分批次处理,这种适用大批量数据处理

2.3 使用字节码技术

可以参考mapstruct字节码技术,对存在服务生成相应处理器,寻找相应处理器进行处理,场景适用于预先知道传入类

Java提升反射效率相关推荐

  1. java 强制转换 效率_Java 性能优化:35 个小细节,让你提升 Java 代码的运行效率...

    代码优化细节 1.尽量指定类.方法的final修饰符 2.尽量重用对象 3.尽可能使用局部变量 4.及时关闭流 5.尽量减少对变量的重复计算 6.尽量采用懒加载的策略,即在需要的时候才创建 7.慎用异 ...

  2. 【java】提升开发效率的17个轮子

    提升开发效率的17个轮子 前言 1.Collections 1.1.排序 1.2.获取最大值.最小值 1.3.线程转换安全集合 1.4.返回空集合 1.5.二分查找 1.6.转换成不可修改集合 2.C ...

  3. 大家都说 Java 反射效率低,为什么呢?

    我们在 Java 开发中,难免会接触到反射,而在一些框架中,反射的运用更是常见.我相信,每次提到反射,大家的第一反应一定是反射效率低,尽量少使用.但是反射的效率到底低多少?反射效率低的原因在哪里?这篇 ...

  4. 大家都说 Java 反射效率低,你知道原因在哪里么

    [这是 ZY 第 17 篇原创技术文章] 预备知识 了解 Java 反射基本用法 看完本文可以达到什么程度 了解 Java 反射原理及 Java 反射效率低的原因 文章概览 我们在 Java 开发中, ...

  5. 菜鸟学习笔记:Java提升篇11(Java动态性1——注解与反射)

    Java提升篇11(Java其它高级特性--注解与反射) 注解(Annotation) JDK内置注解 自定义注解 元注解(meta-annotation) 反射(reflection) 动态语言 反 ...

  6. dwr java有返回值但是js获取不到返回值_一探究竟:Java反射效率低的原因到底在哪?...

    预备知识 了解 Java 反射基本用法 看完本文可以达到什么程度 了解 Java 反射原理及 Java 反射效率低的原因 文章概览 我们在 Java 开发中,难免会接触到反射,而在一些框架中,反射的运 ...

  7. atitit.提升开发效率---使用server控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比較...

    atitit.提升开发效率---使用server控件生命周期  asp.net 11个阶段  java jsf 的6个阶段比較 例如以下列举了server控件生命周期所要经历的11个阶段. (1)初始 ...

  8. java 反射效率分析

    前言 都说Java反射效率慢,个人也只是听说而已,到底慢在哪里? 又有多么慢? 今天就来分析下,此片博客与诸君共享,也当记录下自己的成果. 反射demo 设计 代码 new 和 class.newIn ...

  9. Java开发常用网址,推荐一些能帮助我们提升开发效率和学识巩固的网址,值得收藏

    文章目录 1.前言 2.网址信息 1.在线工具: 2.在线学术文档: 2-1 后端相关: 2-2 前端相关: 2-3 AI相关: 1.前言 推荐一些能帮助我们提升开发效率和学识巩固的网址,值得收藏 2 ...

  10. 菜鸟学习笔记:Java提升篇12(Java动态性2——动态编译、javassist字节码操作)

    菜鸟学习笔记:Java提升篇12(Java动态性2--动态编译.javassist字节码操作) Java的动态编译 通过脚本引擎执行代码 Java字节码操作 JAVAssist的简单使用 常用API ...

最新文章

  1. 20家单位共同倡议发起成立上海人工智能发展联盟
  2. 干货丨详解世界各国的人工智能布局
  3. Microsoft MSDN Windows 8 各版本下载
  4. Tensorflow简单教程
  5. 上行数据和下行数据什么意思_上行带宽和下行带宽什么意思?
  6. MFC获取键盘光标和鼠标光标所在控件的ID
  7. navicat连接mysql报10061错
  8. 迎.NET6,今日先送200P全新视频教程 / 源码
  9. [ZJOI2010]贪吃的老鼠
  10. 今年美国什么工作最吃香?程序猿薪酬超医生
  11. Tendermint推出2000万美元风投基金,促进Cosmos发展
  12. QT开发pjsip的VOIP,A8平台运行
  13. 25.212---复用和信道编码
  14. oracle 字段对错,oracle 两表之间字段赋值错误解析
  15. 电气工程及其自动化计算机配置,电气工程及其自动化
  16. 西门子PID完整程序西门子PLC 1200和多台G120西门子变频器Modbud RTU通讯
  17. CentOS7设置笔记本合盖不休眠
  18. easyswoole 使用 从thinkphp5.1数据库ORM类库
  19. 学校举办朗诵比赛,邀请了 10 位评委为每一名参赛选手的表现打分。假设列表 lst_score
  20. 论文笔记:MPRNet: Multi-Stage Progressive Image Restoration

热门文章

  1. 用form表单提交时,出现415错误
  2. opencv相似图片搜索
  3. led伏安特性实验误差分析_伏安法测量误差分析-北京新东方
  4. 89C51单片机内部结构深度解析
  5. matlab已知上三角实现对角矩阵,MATLAB及其应用考试卷B卷2010-2011
  6. Delphi修改FMX Label字体颜色
  7. 3 万亿美元,苹果问鼎全球市值最高公司宝座
  8. rk3128 平台rk818电源管理驱动移植
  9. T8 ADS1299开发板的默认设置
  10. 考研英语前缀总结·十五