黑马程序员技术交流社区

标题: 反射 [打印本页]

作者: 山水游客    时间: 2012-6-27 16:29
标题: 反射
问个反射的问题,
首先,我定义了一个注解名为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,我的注解里有缺省值啊
作者: 彭盼    时间: 2012-6-28 17:26
本帖最后由 彭盼 于 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());

应该可以了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2