Java之注解初学

注解是那些插入到源代码中用于某种工具处理的标签。这些标签可以在源代码层次上进行操作,也可以在处理编译器将它们纳入到注解类文件中。在Java中,注解是当一个修饰符来被使用的,它被置于被注解项之前,中间没有分号。

注解语法

一个注解是由一个注解接口定义的
    modifiers @interface AnnotationName
    {
        element declaration1;
        element declaration2;
    }
每个元素声明有两种方式:
type elementName();或者type elementName() default value;
举例来说,下面这个注解具有两个元素:value和nums.
    public @interface AnnotationDemo {
        String value() default "";
        int nums() default 0;
    }

每个注解有下面这种格式
    @AnnotationName(elementName1 = value1, elementName2 = value2, ....) 元素的顺序没有影响。如下
    @AnnotationDemo (value="test", nums=5)
如果某个元素的值未指定,那么就使用声明的默认值。如下:
    @AnnotationDemo(nums=5)
元素value的默认值是空字符串""
如果没有指定元素,可能是注解中没有任何元素,也可能是所有元素都是用默认值。那么就不需要使用圆括号了
    @AnnotationDemo
这样的注解又称为标记注解。
当一个注解中只有一个元素,且具有特殊的名字value,这样的注解被称为单值注解。那么可以忽略掉元素名和等号
    public @interface Action
    {
        String value();
    }
可以书写成如下形式:
@Action("Hello")

注解元素类型

1、一个基本类型(int、short、long、byte、char、double、float、boolean)。
2、String
3、Class(具有一个可供选择的类型参数,计入Class<? extends SuperClass>)
4、注解类型
5、前面所述类型组成的数组
例子如下
    public @interface AnnotationTest {
        String assignedTo() default "[none]";
        enum status{SUCCESS, ERROR};
        boolean stop() default false;
        Class<?> testCase() default Void.class;
        ElementType type() default ElementType.TYPE;
        String[] reporteBy();
    }

元注解

元注解用于描述注解接口的行为属性,即用来限制其它注解的行为及范围。
1、@Target元注解可以应用于一个注解,以限制该注解可以应用到那些项上。例如:
    @Target({ElementType.TYPE, ElementType.METHOD})
下面是所有可能的取值情况.它们属于枚举类型ElementType可以指定任意数量的元素类型,用括号括起来.
    ANNOTATION_TYPE  注解类型声明
    PACKAGE                   包
    TYPE                           类(包括enum及接口(包括注解类型))
    METHOD                    方法
    CONSTRUCYOR         构造器
    FIELD                          成员域(包括enum常量)
    PARAMETER               方法或构造器参数
    LOCAL_VARIABLE       本地变量

2、@Retentiont元注解用于指定一条注解应该保留多长时间。其中默认值
    RetentionPolicy.CLASS
    SOURCE    不包括在类文件中的注解
    CLASS       类文件中的注解,但是虚拟机不需要将他们载入
    RUNTIME  类文件中的注解,并由虚拟机载入。通过反射API可获取它们。

3、@Document元注解为像Javadoc这样的文档工具提供了一些提示。
4、@Inherited元注解只能应用于对类的注解。如果一个类具有继承注解,那么它的所有子类都具有同样的注解。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值