Java 注解

来源:互联网 发布:mac 配置搜狗输入法 编辑:程序博客网 时间:2024/06/10 02:56

一:注解的基本概念

注解也被称为元数据,使我们在代码中添加信息提供了一种形式化的方法,在以后非常方便的使用该数据

Java内置的注解有三个:

@Overried:表示当前的方法将覆盖超类中的方法

@Deprecated:如果加了该注解,则编译器将会发出警告

@SuppressWaring:关闭警告信息


自定义注解:

@Retention(RetentionPolicy.RUNTIME)public @interface StudyAnnoation {}


这是一个简单的注解,我们定义一个注解就是在interface前面加上一个@符号,但是这样,注解只是在CLASS文件中可用,在运行阶段将不能使用,对此,Java提供了四种元注解来写自定义注解

@Target:                作用在什么地方   ElementType枚举类提供,

CONSTRUCTOR 构造器声明

FIELD                    域声明(包括enum实例)

LOCAL_VARIABLE(局部变量声明)

METHOD              (方法)

PACKAGE             (包)

PARAMETER         (参数)

TYPE                     (类,接口(包括enum声明))或enum声明


@Retention      表示该注解保留到什么时间       RetentionPolicy枚举类提供了三个,默认class

SOURCE  编译器丢弃

CLASS        在class文件中可用,在jvm中不可用

RUNTIME   VM运行期


@Document    表示该注解包含在Javadoc文件中

@Inherited       允许子类继承父类的注解


测试代码

@StudyAnnoationpublic class AnnoationTest {public static void main(String[] args) {//测试该注解是否是此类型if(AnnoationTest.class.isAnnotationPresent(StudyAnnoation.class)){//得到该注解Annotation  annoation = Annotation.class.getAnnotation(StudyAnnoation.class);System.out.println("StudyAnnoation");}}}

二.编写注解元素

注解元素可用的类型包括

所有的基本类型,String,Class,enum,注解,以上类型的数组

注解元素可用值的限制

注解元素不能具有不确定的值,也就是说必须提供默认值或者在调用时提供值。对于非基本类型的注解元素,其不能用null作为其值。可以用-1或者""来代替


例:新建一个注解

public @interface AnnoationType { String value();}

改写第一个注解类,包括一些注解元素

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface StudyAnnoation { int id(); String name() default "name"; AnnoationType annoationType() default @AnnoationType("annoationType");}

测试:

@StudyAnnoation(id=1,name = "studyannoation")public class AnnoationTest {public static void main(String[] args) {//测试该注解是否是此类型if(AnnoationTest.class.isAnnotationPresent(StudyAnnoation.class)){//得到该注解StudyAnnoation  annoation = AnnoationTest.class.getAnnotation(StudyAnnoation.class);//获取该接口的name方法System.out.println(annoation.name());System.out.println(annoation.id());System.out.println(annoation.annoationType().value());}}}

对于在使用注解的时候,传值有事要加元素名,有时不加,怎么区分了,只有当注解只有一个元素,并且名为value时,才不需要加

0 0
原创粉丝点击