Java注解

注解 -- Annotation

Annotation 是一种能够被书写到Java源代码中的元数据(metadata:描述数据的数据)形式。类、方法、变量、参数和包都可以使用它来进行描述。Annotation不会对它描述的代码操作有任何的直接影响。

JDK中自带的常用注解

@Override -- 要求编译器在编译时检查被修饰的方法是否是一个正确的重写;

@Deprecated -- 被它修饰的方法会被标记为过时(过时不是错误!!),然后编译器就可以提示我们。通常都是用一根斜线把这个方法名划掉。

@SuppressedWarnings -- 用来把代码中的警告信息给消除掉,让它不再报黄色警告。

通过这三种注解的使用,我们了解到了注解的使用表象:

1、@注解名(参数......)

   如果一个注解没有参数,那么()可以省略

   

2、注解可以写在类的声明、方法的声明、变量的声明(属性、参数、局部变量)、和包的声明

  1. 注解不仅仅是写给程序员看的,它还可以影响到编译器,甚至是运行期。

注解的本质

Annotation在本质上就是一个Java类型,是JDK1.5提出的。

1、我们可以把Annotation理解为一种特殊的接口,因为所有的Annotation都默认继承了java.lang.annotation.Annotation的接口。但是在实现的语法中,我们不能做直接的接口继承,而是要使用@interface关键字声明它。

```java

public @interface 注解名{

}

```

2、在注解的{}内,我们要填写它的内容。而它的内容既不是方法也不是属性,或者说语法上既像方法又像属性。

```java

public @interface 注解名{

    访问修饰符 数据类型 标识名();

    ......

}

```

注意

访问修饰符都是public的,可以省略;

数据类型只有5种(基本数据类型、String、Class、枚举、注解类型),以及这5种的一维数组;

标识名应该是名词,因为它代表了一个配置项或者叫做属性名

()不可少,不是参数列表,仅仅是一种特有语法。

如果某个类型元素有默认值,那么应该是用default接在后面;

3、一个注解定义的时候除了上面两点,还可以控制它的使用位置和获取时机

用@Target注解 定义当前注解的书写位置

用@Retention注解 定义当前注解的获取时机

@Target要求填入的有类声明处、方法声明处、构造声明处、变量声明处、参数声明处等等,而且可以同时配置多个

@Retention只有3个选择:源代码、class文件和运行时。通常都是运行时。

```java

@Target({ElementType.METHOD})

@Retention(RetentionPolicy.RUNTIME)

public @interface 注解名{

    访问修饰符 数据类型 标识名();

    ......

}

```

另外还有两个修饰注解的注解:@Documented和@Inherited 

使用注解

1、首先根据该注解的@Target写在正确的位置;

2、书写的语法:

```java

@注解名(类型元素=值1,类型元素=值2....)

```

注意

1、如果一个注解没有类型元素,那么可以省略它后面的()

       @Overrid  @Override()

2、如果一个注解只有一个类型元素,且名字叫做value,那么可以省略"value="

       @MyAnnotation({"hello","world"})

       @MyAnnotation(value={"hello","world"})

3、数组类型的类型元素,如果只给一个值,那么可以省略掉{}

      @MyAnnotation("hello")

      @MyAnnotation({"hello"})

      @MyAnnotation(value="hello")

注解到底在干什么?      

其实,定义注解就是在定义一个具有更强针对性的配置。

注解如何影响运行期

首先一个注解要想在运行期获取到,那么它的@Retention必须是RUNTIME的,然后我们才可以在运行起来以后,通过反射获取到它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值