首页 > 编程知识 正文

注解有什么用,注解怎么实现的

时间:2023-05-06 00:24:05 阅读:274149 作者:3640

一、注解简介

注解是jdk1.5引入的一种新特性,是一种对Java类、方法、属性等的注释机制。

Java本身自有的注解有10种,分别为java.lang包中的5个:@Override、@Deprecated、@SuppressWarnings、@SafeVarargs、@FunctionalInterface;以及java.lang.annotation包中的另外5个:@Retention、@Documented、@Target、@Inherited、@Repeatable。

我们也可以根据自己的需求编写自定义注解。

二、注解结构

1个注解可以绑定多个ElementType和1个RetentionPolicy。

ElementType和RetentionPolicy都是枚举类型的,其中ElementType包含10种类型属性:TYPE、FIELD、METHOD、PARAMETER、CONSTRUCTOR、LOCAL_VARIABLE、ANNOTATION_TYPE、PACKAGE、TYPE_PARAMETER、TYPE_USE,用来指定注解适用的对象类型;而RetentionPolicy包含3种作用域类型:SOURCE、CLASS、RUNTIME,用于指定注解的作用域。

我们使用@Target注解给注解指定ElementType类型,使用@Retention注解给注解指定RetentionPolicy作用域。当没有@Target时,注解默认适用于全部的ElementType类型,@Retention有且必须只有1个。

注解一般语法结构:

@Target(ElementType.XXX) // 指定注解适用的对象类型@Retention(RetentionPolicy.XXX) // 指定注解的作用域public @interface MyAnnotation1 {} 三、常用Java自有注解

3.1 @interface
此注解用于对注解进行定义,在定义注解时它是必须的,使用时置于注解名的前面。

3.2 @Target
此注解用于指定注解适用的对象类型,使用时置于注解上,是注解的注解。

3.3 @Retention
此注解用于指定注解的作用域,使用时置于注解上,是注解的注解。

3.4 @Documented
此注解用于将注解进行javadoc文档化,使用时置于注解上,也是注解的注解。

3.4 @Inherited
此注解标注在注解上,用于使注解具有继承性。

3.4 @Override
此注解标注在方法上,表示该方法对父类中的方法进行重写。

3.4 @SuppressWarnings
此注解可标注于TYPE、FIELD、METHOD、PARAMETER、CONSTRUCTOR、LOCAL_VARIABLE6种类型的作用对象上,当所标注内容产生警告时,编译器会对这些警告进行忽略。

3.4 @Deprecated
此注解可标注于TYPE、FIELD、METHOD、PARAMETER、CONSTRUCTOR、LOCAL_VARIABLE、PACKAGE7种类型的作用对象上,被标注的对象将不再建议被使用。

四、自定义注解 @Target(ElementType.XXX)@Retention(RetentionPolicy.XXX)public @interface MyAnnotation1 {String[] value();...}

value属性:
通过value我们可以为注解指定参数。比如:@SuppressWarnings(value={"unchecked"})表示忽略未经检查的警告。

除了value属性,也可以设置其他属性,JDK1.8以后必须为属性设置初始值,任何类型的属性均不允许赋值为null,空字符串可以写""。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。