使用java的注解(用在java类的方法上的注解)方法

  

场景:根据方法上的注解,通过java反射方式找到需要执行的的方法。

  


  

     /* *注解作用在方法上*/@Target ({ElementType.METHOD})/* *注解的生命周期一直程序运行时都存在VM运行期间保留注解,可以通过反射机制读取注解信息*/@Retention (RetentionPolicy.RUNTIME)/* *注解包含在Javadoc中*/@Documented   @ interface公共项{   字符串值();   }      

        公开课WorkService {      私有静态日志记录器=LoggerFactory.getLogger (WorkService.class);      @Item (“1001”)   公共int getItem1001Info (GirlVo女孩){      logger.info (“getItem1001Info输出:”);   logger.info (girl.toString ());   返回1;   }   @Item (“1002”)   公共int getItem1002Info (GirlVo女孩){      logger.info (“getItem1002Info输出:”);   logger.info (girl.toString ());   返回1;   }   @Item (“1003”)   公共int getItem1003Info (GirlVo女孩){   logger.info (“getItem1003Info输出:”);   logger.info (girl.toString ());   返回1;   }   @Item (“1004”)   公共int getItem1004Info (GirlVo女孩){   logger.info (“getItem1004Info输出:”);   logger.info (girl.toString ());   返回1;   }   @Item (“1005”)   公共int getItem1005Info (GirlVo女孩){   logger.info (“getItem1005Info输出:”);   logger.info (girl.toString ());   返回1;   }   @Item (“1006”)   公共int getItem1006Info (GirlVo女孩){   logger.info (“getItem1006Info输出:”);   logger.info (girl.toString ());   返回1;   }   }      

        公共类GirlVo实现Serializable {      私有静态最终长serialVersionUID=-8545755852948661858 l;/* * ID号*/私人字符串girlId;/* *姓名*/私人字符串girlName;/* *年龄*/私人长年龄;/* *身高*/私人双高度;/* *罩杯*/私人字符串cupSize;   公共字符串getGirlId () {   返回girlId;   }   公共空间setGirlId(字符串girlId) {   这一点。girlId=girlId;   }   公共字符串getGirlName () {   返回girlName;   }   公共空间setGirlName(字符串girlName) {   这一点。girlName=girlName;   }   公共长getAge () {   返回年龄;   }   公共空间setAge(长年龄){   这一点。年龄=年龄;   }   公共双获得(){   回报高;   }   公共空间setHeight(双高度){   这一点。身高=身高;   }   公共字符串getCupSize () {   返回cupSize;   }   公共空间setCupSize(字符串cupSize) {   这一点。cupSize=cupSize;   }      @Override   公共字符串toString () {      返回“GirlVo girlId=" + girlId   +”,girlName=" + girlName   +”、年龄=" +的年龄   +”,身高=" +高度   +”,cupSize=" + cupSize   +“]”;   }   }      

        List方法=MethodUtils.getMethodsListWithAnnotation (clazz Item.class);   (方法方法:方法){   (注释注释:method.getDeclaredAnnotations ()) {   如果(注释instanceof项){   字符串代码=((项)注释)value ();   如果对象。=(项目、代码)){   尝试{   logger.info(“注解号:“+代码+“执行开始…”);   method.invoke (clazz.newInstance (), girlVo);   logger.info(“注解号:“+代码+“执行结束…”);   }捕捉(异常e) {   e.printStackTrace ();   logger.info(“抛异常…”);   }   }   }   }   }      }      }      

        公开课TestAnnotation {      私有静态日志记录器=LoggerFactory.getLogger (TestAnnotation.class);      公共静态void main (String [] args)抛出ClassNotFoundException {   logger.info(“测试开始……”);   Object> HashMap<字符串;地图=(HashMap<字符串,Object>) getData ();/* *遍历hashMap */(Entry<字符串,Object>条目:map.entrySet ()) {   字符串条目=entry.getKey ();   GirlVo GirlVo=(GirlVo) entry.getValue ();   ReflectCallMethodAnnotation.annotationMethod(项目,girlVo);   }      logger.info(“测试结束……”);   }         公共静态地图getData () {      Object> HashMap<字符串;data=https://www.yisu.com/zixun/new HashMap ();      GirlVo girlVo1=new GirlVo ();   girlVo1.setGirlId (“1001”);   girlVo1.setGirlName(“张一”);   girlVo1.setAge (27);   girlVo1.setHeight (169);   girlVo1.setCupSize (“F”);      GirlVo girlVo2=new GirlVo ();   girlVo2.setGirlId (“1002”);   girlVo2.setGirlName(“王二”);   girlVo2.setAge (29);   girlVo2.setHeight (175);   girlVo2.setCupSize (" B ");      GirlVo girlVo3=new GirlVo ();   girlVo3.setGirlId (“1003”);   girlVo3.setGirlName(“刘五”);   girlVo3.setAge (24);   girlVo3.setHeight (160);   girlVo3.setCupSize (" B ");      GirlVo girlVo4=new GirlVo ();   girlVo4.setGirlId (“1004”);   girlVo4.setGirlName(“陈六”);   girlVo4.setAge (21);   girlVo4.setHeight (168);   girlVo4.setCupSize (“C”);      GirlVo girlVo5=new GirlVo ();   girlVo5.setGirlId (“1005”);   girlVo5.setGirlName(“赵七”);   girlVo5.setAge (25);   girlVo5.setHeight (169);   girlVo5.setCupSize (“C”);      GirlVo girlVo6=new GirlVo ();   girlVo6.setGirlId (“1006”);   girlVo6.setGirlName(“张八”);   girlVo6.setAge (26);   girlVo6.setHeight (165);   girlVo6.setCupSize (“A”);      数据。put (" 1001 ", girlVo1);   数据。put (" 1002 ", girlVo2);   数据。put (" 1003 ", girlVo3);   数据。put (" 1004 ", girlVo4);   数据。put (" 1005 ", girlVo5);   数据。put (" 1006 ", girlVo6);      返回数据;   }      }

使用java的注解(用在java类的方法上的注解)方法