Java中怎么利用反射获取类方法速率
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇文章给大家分享的是有关Java中怎么利用反射获取类方法速率,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。反射介绍Java反射是指在程
千家信息网最后更新 2025年02月01日Java中怎么利用反射获取类方法速率
本篇文章给大家分享的是有关Java中怎么利用反射获取类方法速率,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
反射介绍
Java反射是指在程序运行状态中,能检查任意对象的内容并调用任意方法。对于任何一个对象,我们都能够对它的方法和属性进行调用。我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制。
测试代码
反射调用的类
public class ClassA { private String name; public void setName(String name) { this.name = name; }}
测试主类
import lombok.extern.slf4j.Slf4j;import java.lang.reflect.Method;@Slf4jpublic class MapMain { private static final int COUNT = 100000; public static void main(String[] args) { System.out.println("starting ..."); long start = System.currentTimeMillis(); for (int i = 0; i < COUNT; i++) { ClassA clzA = new ClassA(); clzA.setName("A" + i); } long end = System.currentTimeMillis(); long diff = end - start; System.out.println("native call:" + diff); try { long start2 = System.currentTimeMillis(); for (int i = 0; i < COUNT; i++) { Class clzA = Class.forName("com.yq.myreflect.ClassA"); Class>[] argsType = new Class[1]; argsType[0] = String.class; Method m = clzA.getMethod("setName", argsType); Object obj = clzA.newInstance(); m.invoke(obj, "A" + i); } long end2 = System.currentTimeMillis(); long diff2 = end2 - start2; System.out.println("reflect call:" + diff2); } catch (Exception ex) { ex.printStackTrace(); } try { long start3 = System.currentTimeMillis(); //缓存类,避免多次查找 Class clzA = Class.forName("com.yq.myreflect.ClassA"); Class>[] argsType = new Class[1]; argsType[0] = String.class; //缓存方法,避免多次查找 Method m = clzA.getMethod("setName", argsType); for (int i = 0; i < COUNT; i++) { Object obj = clzA.newInstance(); m.invoke(obj, "A" + i); } long end3 = System.currentTimeMillis(); long diff3 = end3 - start3; System.out.println("cache call:" + diff3); } catch (Exception ex) { ex.printStackTrace(); } }}
测试结果
多次运行的平均结果
starting ...native call:33reflect call:126cache call:16
结果分析
可以看到如果我们缓存了类,以及要调用的方法后,使用反射比直接调用还快。
//缓存类,避免多次查找 Class clzA = Class.forName("com.yq.myreflect.ClassA"); Class>[] argsType = new Class[1]; argsType[0] = String.class; //缓存方法,避免多次查找
以上就是Java中怎么利用反射获取类方法速率,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
方法
反射
缓存
对象
结果
测试
速率
更多
知识
篇文章
运行
实用
代码
信息
内容
功能
动态
就是
属性
工作会
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
无线无网络安全
苏州高频阿里云服务器
网络安全手抄报简单好看的
武汉金网安网络技术有限公司
国家电网网络安全教育
vb录入数据库
互联网小软件开发
dayz服务器怎么刷出物资
学软件开发要英语
阿里云的网络安全策略有哪些
邮箱收件服务器格式怎么写
光通传奇3开放过多少服务器
福州软件开发培训机构哪个好
租一个网站服务器多少钱
数据库索引只能是整型吗
扬州网络营销软件开发价钱
误删mysql数据库
江苏省网络安全信息委员会
跟网络安全有关的题目
国内低价的云服务器
软件开发组
山东省网络安全等级保护网
网络安全知识测试总结
监控服务器怎么使用网络
网络安全日记100
linux服务器检查网络命令
gxps服务器操作视频教程
湖北云温商互联网科技
学术期刊 数据库
滴滴司机信息数据库