A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 山水游客 中级黑马   /  2012-6-27 16:29  /  1380 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

问个反射的问题,
首先,我定义了一个注解名为W
Java code
@Target({METHOD, CONSTRUCTOR, FIELD, PARAMETER})
@Retention(RUNTIME)
public @interface W
{
    String value() default "WANGNING";

}



然后在类中的方法前面加上该注解

Java code
public class Demo
{
    @W()
    public void setMethod(){
    }
}



最后,我新建一个类,用于输出该注解
Java code

public class RunTests
{
    public static void main(String[] args) throws Exception
    {
        for (Method m : Class.forName("homework.Demo").getMethods())
        {
            if(m.isAnnotationPresent(W.class)){
                System.out.println(m.getAnnotation(W.class));
                System.out.println(m.getDefaultValue());
            }
        }
    }
}



我的问题是,m.getDefaultValue()为什么是null,我的注解里有缺省值啊

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
本帖最后由 彭盼 于 2012-6-28 17:35 编辑

public class RunTests
{
    public static void main(String[] args) throws Exception
    {
        for (Method m : Class.forName("homework.Demo").getMethods())
        {
            if(m.isAnnotationPresent(W.class)){
                System.out.println(m.getAnnotation(W.class));
                System.out.println(m.getDefaultValue());
            }
        }
    }
}
应该是红色的部分有问题,得到了方法后你没有进一步获取其注解。把红色的一行改成
Annotation annotation=m.getAnnotation(w.class);
                System.out.println(ann.toString());

应该可以了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马