使用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(Entryentry:map.entrySet()){
Stringitem=entry.getKey();
GirlVogirlVo=(GirlVo)entry.getValue();
ReflectCallMethodAnnotation.annotationMethod(item,girlVo);
}
logger.info("测试结束......");
}
publicstaticMapgetData(){
HashMapdata=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类的方法上的注解)方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!