使用java的注解(用在java类的方法上的注解)方法
场景:根据方法上的注解,通过java反射方式找到需要执行的的方法。
1.注解类
/**注解作用在方法上*/ @Target({ElementType.METHOD}) /**注解的生命周期一直程序运行时都存在VM运行期间保留注解,可以通过反射机制读取注解信息*/ @Retention(RetentionPolicy.RUNTIME) /**注解包含在Javadoc中*/ @Documented public@interfaceItem{ Stringvalue(); }
2.在类的方法上使用注解
publicclassWorkService{ privatestaticLoggerlogger=LoggerFactory.getLogger(WorkService.class); @Item("1001") publicintgetItem1001Info(GirlVogirl){ logger.info("getItem1001Info输出:"); logger.info(girl.toString()); return1; } @Item("1002") publicintgetItem1002Info(GirlVogirl){ logger.info("getItem1002Info输出:"); logger.info(girl.toString()); return1; } @Item("1003") publicintgetItem1003Info(GirlVogirl){ logger.info("getItem1003Info输出:"); logger.info(girl.toString()); return1; } @Item("1004") publicintgetItem1004Info(GirlVogirl){ logger.info("getItem1004Info输出:"); logger.info(girl.toString()); return1; } @Item("1005") publicintgetItem1005Info(GirlVogirl){ logger.info("getItem1005Info输出:"); logger.info(girl.toString()); return1; } @Item("1006") publicintgetItem1006Info(GirlVogirl){ logger.info("getItem1006Info输出:"); logger.info(girl.toString()); return1; } }
3.实体类,作为参数传递
publicclassGirlVoimplementsSerializable{ privatestaticfinallongserialVersionUID=-8545755852948661858L; /**ID号*/ privateStringgirlId; /**姓名*/ privateStringgirlName; /**年龄*/ privateLongage; /**身高*/ privateDoubleheight; /**罩杯*/ privateStringcupSize; publicStringgetGirlId(){ returngirlId; } publicvoidsetGirlId(StringgirlId){ this.girlId=girlId; } publicStringgetGirlName(){ returngirlName; } publicvoidsetGirlName(StringgirlName){ this.girlName=girlName; } publiclonggetAge(){ returnage; } publicvoidsetAge(longage){ this.age=age; } publicdoublegetHeight(){ returnheight; } publicvoidsetHeight(doubleheight){ this.height=height; } publicStringgetCupSize(){ returncupSize; } publicvoidsetCupSize(StringcupSize){ this.cupSize=cupSize; } @Override publicStringtoString(){ return"GirlVo[girlId="+girlId +",girlName="+girlName +",age="+age +",height="+height +",cupSize="+cupSize +"]"; } }
4.反射调用方法注解的类
Listmethods=MethodUtils.getMethodsListWithAnnotation(clazz,Item.class); for(Methodmethod:methods){ for(Annotationannotation:method.getDeclaredAnnotations()){ if(annotationinstanceofItem){ Stringcode=((Item)annotation).value(); if(Objects.equals(item,code)){ try{ logger.info("注解号:"+code+"执行开始..."); method.invoke(clazz.newInstance(),girlVo); logger.info("注解号:"+code+"执行结束..."); }catch(Exceptione){ e.printStackTrace(); logger.info("抛异常..."); } } } } } } }
5.main方法测试类
publicclassTestAnnotation{ privatestaticLoggerlogger=LoggerFactory.getLogger(TestAnnotation.class); publicstaticvoidmain(String[]args)throwsClassNotFoundException{ logger.info("测试开始......"); HashMapmap=(HashMap )getData(); /**遍历hashMap*/ for(Entry entry:map.entrySet()){ Stringitem=entry.getKey(); GirlVogirlVo=(GirlVo)entry.getValue(); ReflectCallMethodAnnotation.annotationMethod(item,girlVo); } logger.info("测试结束......"); } publicstaticMapgetData(){ HashMap data=newHashMap(); GirlVogirlVo1=newGirlVo(); girlVo1.setGirlId("1001"); girlVo1.setGirlName("张一"); girlVo1.setAge(27); girlVo1.setHeight(169); girlVo1.setCupSize("F"); GirlVogirlVo2=newGirlVo(); girlVo2.setGirlId("1002"); girlVo2.setGirlName("王二"); girlVo2.setAge(29); girlVo2.setHeight(175); girlVo2.setCupSize("B"); GirlVogirlVo3=newGirlVo(); girlVo3.setGirlId("1003"); girlVo3.setGirlName("刘五"); girlVo3.setAge(24); girlVo3.setHeight(160); girlVo3.setCupSize("B"); GirlVogirlVo4=newGirlVo(); girlVo4.setGirlId("1004"); girlVo4.setGirlName("陈六"); girlVo4.setAge(21); girlVo4.setHeight(168); girlVo4.setCupSize("C"); GirlVogirlVo5=newGirlVo(); girlVo5.setGirlId("1005"); girlVo5.setGirlName("赵七"); girlVo5.setAge(25); girlVo5.setHeight(169); girlVo5.setCupSize("C"); GirlVogirlVo6=newGirlVo(); girlVo6.setGirlId("1006"); girlVo6.setGirlName("张八"); girlVo6.setAge(26); girlVo6.setHeight(165); girlVo6.setCupSize("A"); data.put("1001",girlVo1); data.put("1002",girlVo2); data.put("1003",girlVo3); data.put("1004",girlVo4); data.put("1005",girlVo5); data.put("1006",girlVo6); returndata; } }
以上所述是小编给大家介绍的使用java的注解(用在java类的方法上的注解)方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!