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

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

1.注解类

/**注解作用在方法上*/

@Target({ElementType.METHOD})

/**注解的生命周期一直程序运行时都存在VM运行期间保留注解,可以通过反射机制读取注解信息*/

@Retention(RetentionPolicy.RUNTIME)

/**注解包含在Javadoc中*/

@Documented

public @interface Item {

String value();

}

2.在类的方法上使用注解

public class WorkService {

private static Logger logger = LoggerFactory.getLogger(WorkService.class);

@Item("1001")

public int getItem1001Info(GirlVo girl) {

logger.info("getItem1001Info输出:");

logger.info(girl.toString());

return 1;

}

@Item("1002")

public int getItem1002Info(GirlVo girl) {

logger.info("getItem1002Info输出:");

logger.info(girl.toString());

return 1;

}

@Item("1003")

public int getItem1003Info(GirlVo girl) {

logger.info("getItem1003Info输出:");

logger.info(girl.toString());

return 1;

}

@Item("1004")

public int getItem1004Info(GirlVo girl) {

logger.info("getItem1004Info输出:");

logger.info(girl.toString());

return 1;

}

@Item("1005")

public int getItem1005Info(GirlVo girl) {

logger.info("getItem1005Info输出:");

logger.info(girl.toString());

return 1;

}

@Item("1006")

public int getItem1006Info(GirlVo girl) {

logger.info("getItem1006Info输出:");

logger.info(girl.toString());

return 1;

}

}

3.实体类,作为参数传递

public class GirlVo implements Serializable {

private static final long serialVersionUID = -8545755852948661858L;

/**ID号*/

private String girlId;

/**姓名*/

private String girlName;

/**年龄*/

private Long age;

/**身高*/

private Double height;

/**罩杯*/

private String cupSize;

public String getGirlId() {

return girlId;

}

public void setGirlId(String girlId) {

this.girlId = girlId;

}

public String getGirlName() {

return girlName;

}

public void setGirlName(String girlName) {

this.girlName = girlName;

}

public long getAge() {

return age;

}

public void setAge(long age) {

this.age = age;

}

public double getHeight() {

return height;

}

public void setHeight(double height) {

this.height = height;

}

public String getCupSize() {

return cupSize;

}

public void setCupSize(String cupSize) {

this.cupSize = cupSize;

}

@Override

public String toString() {

return "GirlVo [girlId=" + girlId

+",girlName=" + girlName

+",age=" + age

+",height=" + height

+",cupSize=" + cupSize

+"]";

}

}

4.反射调用方法注解的类

List methods = MethodUtils.getMethodsListWithAnnotation(clazz,Item.class);

for (Method method : methods) {

for (Annotation annotation : method.getDeclaredAnnotations()) {

if (annotation instanceof Item){

String code = ((Item) annotation).value();

if (Objects.equals(item, code)){

try {

logger.info("注解号:" + code +" 执行开始...");

method.invoke(clazz.newInstance(), girlVo);

logger.info("注解号:" + code +" 执行结束...");

} catch (Exception e) {

e.printStackTrace();

logger.info("抛异常...");

}

}

}

}

}

}

}

5.main方法测试类

public class TestAnnotation {

private static Logger logger = LoggerFactory.getLogger(TestAnnotation.class);

public static void main(String []args) throws ClassNotFoundException{

logger.info("测试开始......");

HashMap map = (HashMap) getData();

/**遍历hashMap*/

for(Entry entry : map.entrySet()){

String item = entry.getKey();

GirlVo girlVo = (GirlVo) entry.getValue();

ReflectCallMethodAnnotation.annotationMethod(item,girlVo);

}

logger.info("测试结束......");

}

public static Map getData() {

HashMap data = 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");

data.put("1001", girlVo1);

data.put("1002", girlVo2);

data.put("1003", girlVo3);

data.put("1004", girlVo4);

data.put("1005", girlVo5);

data.put("1006", girlVo6);

return data;

}

}

以上所述是小编给大家介绍的使用java的注解(用在java类的方法上的注解)方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值