黑马程序员--注解

来源:互联网 发布:细说php第四版电子书 编辑:程序博客网 时间:2024/04/28 14:59

一、Java内置基本注解


1、@Deprecated:用该注解注释的程序元素,表明不鼓励程序员使用这样的元素,通常是它很危险或存在更好的选择\


2、@Override:表明当前的方法定义将覆盖超类中的方法。

 
3、@SuppressWarnings:表明关闭不当的编译器警告信息。


4、@Target:表明该注解可以用于什么地方。

     表示该注解用于什么地方,例如:@Target(ElementType.METHOD)  ElemenetType 参数包括:
           ElemenetType.CONSTRUCTOR 构造器声明
           ElemenetType.FIELD 域声明(包括 enum 实例)
           ElemenetType.LOCAL_VARIABLE 局部变量声明
           ElemenetType.METHOD 方法声明
           ElemenetType.PACKAGE 包声明
           ElemenetType.PARAMETER 参数声明
           ElemenetType.TYPE 类,接口(包括注解类型)或enum声明, 

5、@Retention:表明需要在什么级别保存该注解信息。

     Retention是枚举类型,有三个值 (Source  class  RunTime).它是为自定义的注解服务的.适于类,接口或者枚举声明

                        @Retention(RetentionPolicy.SOURCE)  保留在SOURCE阶段。
                        @Retention(RetentionPolicy.CLASS)      保留CLASS中。
                        @Retention(RetentionPolicy.RUNTIME)   一支存在.

 创建注解类的格式:

          public @interface name{}

  自定义注释:


            @interface RequestForEnhancement {

            int id();

           String synopsis();

            String engineer() default "[unassigned]";

            String date();

            default "[unimplemented]";

}

一旦完成定义,就可以使用它做注解声明。注解是一个特殊的修饰符,可以和其他修饰符一样(如public,static,final)用在各种地方。为方便计,注解一般放在最前面。注解修饰符由@符号、注解类型名和括号括起来的元素名/值对组成。下面这个例子声明一个方法使用了上面所定义的注解。

@RequestForEnhancement(

id = 2868724,

synopsis = "Enable time-travel",

engineer = "Mr. Peabody",

date = "4/1/3007"

)

public static void travelThroughTime(Date destination) { ... }

注解类型如果不含任何元素,被称为“标记”注解类型,如

                public @interface Preliminary { }

“标记”注解类型允许忽略括号,如下:

                @Preliminary public class TimeTravel { ... }



注意地方

       1、注解元素可以用的类型只有:所有基本类型(int,float,boolean)、String、Class、enum、Annotation、以上类型的数组。

       2、在定义元素的默认值时有限制,首先,元素不能有不确定的值,也就是说,元素必须要么具有默认值,要么在使用注解时提供元素的值;其次,对于非基本类型的元素,不能以null作为其值。

       3、注解不支持继承。

             



原创粉丝点击