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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 付信榕 于 2012-6-13 10:29 编辑

package it.cast.da2y;
//自定义注解ItcastAnnotaton
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;

@Retention(RetentionPolicy.RUNTIME)//元注解,为注解ItcastAnnotation作解释。表示该注解保留的的阶段是运行期
@Target({ElementType.METHOD,ElementType.TYPE})//元注解,
表示
ItcastAnnotation
作用的目标可以是方法上,也可以是
TYPE
上。

public @interface ItcastAnnotaton {
        String color();//String color();default "blue";
        
        String value();//特殊,当仅是此需设置值时(原value=“abc”),可省略为(“abc”)
        int[] arrrayAttr()default{3,4,4};//数组成员
               
}
注解ItcastAnnotaton  的应用
@ItcastAnnotaton(color= "red",value="abc",arrrayAttr=1)//作用在类上,打印结果为red
public class AnnotationTest1 {
        /**
         * @param args
         */
        //@ItcastAnnotaton(color= "red",value="abc",arrrayAttr=1)//作用在方法上时,就无打印结果,注解 ItcastAnnotaton的作用目标不是类和方法上的吗?为什么在这里又不行呢???求解。

        
        public static void main(String[] args)throws Exception {
                // TODO Auto-generated method stub
                if(AnnotationTest1.class.isAnnotationPresent(ItcastAnnotaton.class)){
                        ItcastAnnotaton annotation = (ItcastAnnotaton) AnnotationTest1.class.getAnnotation(ItcastAnnotaton.class);
                        System.out.println(annotation.color());
                }
        }

}


评分

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

查看全部评分

2 个回复

倒序浏览
因为你获取的是作用在类上的注解,而没有获取作用在方法上的注解。
获取作用在方法上的注解:
xxx注解 注解引用= 类上某个方法对应的Method对象.getAnnotation(xxx注解.class);

评分

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

查看全部评分

回复 使用道具 举报
陈超 发表于 2012-6-9 17:45
因为你获取的是作用在类上的注解,而没有获取作用在方法上的注解。
获取作用在方法上的注解:
xxx注解 注解 ...

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