Java中怎么利用反射获取类方法速率

  介绍

本篇文章给大家分享的是有关Java中怎么利用反射获取类方法速率,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强>反射介绍

Java反射是指在程序运行状态中,能检查任意对象的内容并调用任意方法。对于任何一个对象,我们都能够对它的方法和属性进行调用。我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制。

<强>测试代码

反射调用的类

 public  class  ClassA  {
  ,,,private  String 名称;
  
  ,,,public  void  setName (String 名称),{
  ,,,,,,,this.name =,名称;
  ,,,}
  }

测试主类

 import  lombok.extern.slf4j.Slf4j;
  
  import  java.lang.reflect.Method;
  
  
  @Slf4j
  public  class  MapMain  {
  ,,,private  static  final  int  COUNT =, 100000;
  
  ,,,public  static  void  main (String [], args), {
  ,,,,,,,System.out.println (“starting …“);
  ,,,,,,,long  start =, System.currentTimeMillis ();
  ,,,,,,,for  (int 小姐:=,0;,小姐:& lt;,计数;,我+ +),{
  ,,,,,,,,,,,ClassA  clzA =, new  ClassA ();
  ,,,,,,,,,,,clzA.setName (“A", +, i);
  ,,,,,,,}
  ,,,,,,,long 最终获得=,System.currentTimeMillis ();
  ,,,,,,,long  diff =,最终获得成功;开始;
  ,,,,,,,System.out.println (“native 叫:“,+,diff);
  
  ,,,,,,,try  {
  ,,,,,,,,,,,long  start2 =, System.currentTimeMillis ();
  ,,,,,,,,,,,for  (int 小姐:=,0;,小姐:& lt;,计数;,我+ +),{
  ,,,,,,,,,,,,,,,Class  clzA =, forname (“com.yq.myreflect.ClassA");
  ,,,,,,,,,,,,,,,Class<?在[],argsType =, new 类[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 叫:“,+,diff2);
  ,,,,,,,},catch  (Exception 交货),{
  ,,,,,,,,,,,ex.printStackTrace ();
  ,,,,,,,}
  
  
  ,,,,,,,try  {
  ,,,,,,,,,,,long  start3 =, System.currentTimeMillis ();
  ,,,,,,,,,,//缓存类,避免多次查找
  ,,,,,,,,,,,Class  clzA =, forname (“com.yq.myreflect.ClassA");
  ,,,,,,,,,,,Class<?在[],argsType =, new 类[1];
  ,,,,,,,,,,,argsType [0],=, String.class;
  ,,,,,,,,,,,//缓存方法,避免多次查找
  ,,,,,,,,,,,Method  m =, clzA.getMethod (“setName",, argsType);
  ,,,,,,,,,,,for  (int 小姐:=,0;,小姐:& lt;,计数;,我+ +),{
  ,,,,,,,,,,,,,,,Object  obj =, clzA.newInstance ();
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

Java中怎么利用反射获取类方法速率