Java提升反射效率
一、背景
在框架层、业务通用处理层经常会使用反射来做一些统一的处理,但是反射往往效率很低
二、解决方法
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提升反射效率相关推荐
- java 强制转换 效率_Java 性能优化:35 个小细节,让你提升 Java 代码的运行效率...
代码优化细节 1.尽量指定类.方法的final修饰符 2.尽量重用对象 3.尽可能使用局部变量 4.及时关闭流 5.尽量减少对变量的重复计算 6.尽量采用懒加载的策略,即在需要的时候才创建 7.慎用异 ...
- 【java】提升开发效率的17个轮子
提升开发效率的17个轮子 前言 1.Collections 1.1.排序 1.2.获取最大值.最小值 1.3.线程转换安全集合 1.4.返回空集合 1.5.二分查找 1.6.转换成不可修改集合 2.C ...
- 大家都说 Java 反射效率低,为什么呢?
我们在 Java 开发中,难免会接触到反射,而在一些框架中,反射的运用更是常见.我相信,每次提到反射,大家的第一反应一定是反射效率低,尽量少使用.但是反射的效率到底低多少?反射效率低的原因在哪里?这篇 ...
- 大家都说 Java 反射效率低,你知道原因在哪里么
[这是 ZY 第 17 篇原创技术文章] 预备知识 了解 Java 反射基本用法 看完本文可以达到什么程度 了解 Java 反射原理及 Java 反射效率低的原因 文章概览 我们在 Java 开发中, ...
- 菜鸟学习笔记:Java提升篇11(Java动态性1——注解与反射)
Java提升篇11(Java其它高级特性--注解与反射) 注解(Annotation) JDK内置注解 自定义注解 元注解(meta-annotation) 反射(reflection) 动态语言 反 ...
- dwr java有返回值但是js获取不到返回值_一探究竟:Java反射效率低的原因到底在哪?...
预备知识 了解 Java 反射基本用法 看完本文可以达到什么程度 了解 Java 反射原理及 Java 反射效率低的原因 文章概览 我们在 Java 开发中,难免会接触到反射,而在一些框架中,反射的运 ...
- atitit.提升开发效率---使用server控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比較...
atitit.提升开发效率---使用server控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比較 例如以下列举了server控件生命周期所要经历的11个阶段. (1)初始 ...
- java 反射效率分析
前言 都说Java反射效率慢,个人也只是听说而已,到底慢在哪里? 又有多么慢? 今天就来分析下,此片博客与诸君共享,也当记录下自己的成果. 反射demo 设计 代码 new 和 class.newIn ...
- Java开发常用网址,推荐一些能帮助我们提升开发效率和学识巩固的网址,值得收藏
文章目录 1.前言 2.网址信息 1.在线工具: 2.在线学术文档: 2-1 后端相关: 2-2 前端相关: 2-3 AI相关: 1.前言 推荐一些能帮助我们提升开发效率和学识巩固的网址,值得收藏 2 ...
- 菜鸟学习笔记:Java提升篇12(Java动态性2——动态编译、javassist字节码操作)
菜鸟学习笔记:Java提升篇12(Java动态性2--动态编译.javassist字节码操作) Java的动态编译 通过脚本引擎执行代码 Java字节码操作 JAVAssist的简单使用 常用API ...
最新文章
- 20家单位共同倡议发起成立上海人工智能发展联盟
- 干货丨详解世界各国的人工智能布局
- Microsoft MSDN Windows 8 各版本下载
- Tensorflow简单教程
- 上行数据和下行数据什么意思_上行带宽和下行带宽什么意思?
- MFC获取键盘光标和鼠标光标所在控件的ID
- navicat连接mysql报10061错
- 迎.NET6,今日先送200P全新视频教程 / 源码
- [ZJOI2010]贪吃的老鼠
- 今年美国什么工作最吃香?程序猿薪酬超医生
- Tendermint推出2000万美元风投基金,促进Cosmos发展
- QT开发pjsip的VOIP,A8平台运行
- 25.212---复用和信道编码
- oracle 字段对错,oracle 两表之间字段赋值错误解析
- 电气工程及其自动化计算机配置,电气工程及其自动化
- 西门子PID完整程序西门子PLC 1200和多台G120西门子变频器Modbud RTU通讯
- CentOS7设置笔记本合盖不休眠
- easyswoole 使用 从thinkphp5.1数据库ORM类库
- 学校举办朗诵比赛,邀请了 10 位评委为每一名参赛选手的表现打分。假设列表 lst_score
- 论文笔记:MPRNet: Multi-Stage Progressive Image Restoration