java 用Method的isAnnotationPresent(Class) 方法判断包含注解的问题

疾风伝 2017-05-25 06:24:37
自定义注解:

package org.mkh.shop.model;

public @interface ShopDi{
String abc() default "";
String value() default "";
}


测试类

package org.mkh.shop.dao;

import java.lang.reflect.Method;

import org.junit.Test;
import org.mkh.shop.model.ShopDi;

public class TestShopDi {

@ShopDi
public void aaaa(){}

@Test
public void test01(){
Method[] ms = this.getClass().getDeclaredMethods();
for(Method m : ms ){
String mn = m.getName();
System.out.println(mn+"----"+m.isAnnotationPresent(ShopDi.class));

if(m.isAnnotationPresent(ShopDi.class)){
System.out.println(mn+"------shop di ");
}
}
}
}


测试结果:
aaaa----false
test01----false


问题来了,为什么aaaa返回的是false?我看教程,教程的输出结果是true,搞了很久没有找到原因。
求各路大神帮忙找找原因
PS:我用的是jdk 1.8
...全文
1312 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶渐离 2019-10-20
  • 打赏
  • 举报
回复
@Retention(RetentionPolicy.RUNTIME) 加上这个就行
李德胜1995 2017-05-25
  • 打赏
  • 举报
回复

@Target(value=ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ShopDi{
    String abc() default "";
    String value() default "";
}

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧