场景:根据方法上的注解,通过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类的方法上的注解)方法