黑马程序员技术交流社区

标题: 张老师基础加强视频 35_为注解增加各种属性的问题<已解决> [打印本页]

作者: 付信榕    时间: 2012-6-8 22:07
标题: 张老师基础加强视频 35_为注解增加各种属性的问题<已解决>
本帖最后由 付信榕 于 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());
                }
        }

}



作者: 陈超    时间: 2012-6-9 17:45
因为你获取的是作用在类上的注解,而没有获取作用在方法上的注解。
获取作用在方法上的注解:
xxx注解 注解引用= 类上某个方法对应的Method对象.getAnnotation(xxx注解.class);
作者: 付信榕    时间: 2012-6-9 19:24
陈超 发表于 2012-6-9 17:45
因为你获取的是作用在类上的注解,而没有获取作用在方法上的注解。
获取作用在方法上的注解:
xxx注解 注解 ...

明白了,谢谢





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