Java——注解和注释

0 注解和注释的区别

在博主刚开始学习java语言的时候,经常把注释和注解搞混淆,误认为这两个是类似的东西,其实它们完全不是一个东西。

注释:

注释是程序员在代码中添加的说明性文字,用于解释代码的功能、目的或实现细节。Java中的注释有三种类型:

  1. 单行注释:以//开头,直到该行结束。
  2. 多行注释:以/*开始,以*/结束,可以跨越多行。
  3. Javadoc注释:以/**开始,以*/结束,通常用于生成API文档。

注释不会被编译器处理,它们只是为了方便程序员和其他阅读代码的人理解代码。因此,注释不会影响代码的执行。

注解:

注解(Annotation)也被称为元数据(Metadata),用于修饰解释 包、类、方法、属性、构造器、局部变量等数据信息。

注解本质是一个接口,它继承自java.lang.annotation.Annotation接口。注解的定义使用@interface关键字。注解可以有元素(类似于接口中的方法),元素可以有默认值。

注解可以被编译器或运行时环境处理。例如,Java编译器可以使用注解来生成额外的代码或进行错误检查。在运行时,程序可以通过反射API访问注解的信息。

区别:

  1. 目的:注释是为了方便人类阅读和理解代码;注解是为了向编译器或运行时环境提供关于代码的额外信息。
  2. 处理:注释在编译时被忽略,不会影响代码的执行;注解可以被编译器或运行时环境处理,可能会影响代码的执行或生成额外的代码。
  3. 语法:注释有特定的格式,如///* *//** */;注解使用@符号开始,后面跟着注解的名称和可能的元素值。
  4. 用途:注释主要用于解释代码;注解可以用于多种目的,如生成代码、进行错误检查、配置框架等。

1 注解的使用

1.1 三个基本的Annotation

@Override:限定某个方法,是重写父类方法,该注解只能用于方法

@Deprecated:用于表示某个程序元素(类、方法)已经过时

@SuppressWarnings:抑制编译器警告

1.2 基本的Annotation应用案例

@Override重写父类方法

源码:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}

@Deprecated:过时了但仍然可以使用

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
}

@Target表示可以作用与哪些元素上,比如@Deprecated可以作用域构造器、字段、局部变量、方法、包、参数、类型上。

@SuppressWarnings:抑制警告(程序员从不看警告lol)

@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
String[] value();
}

1.3 JDK的元注解

@Retention

RetentionPolicy.SOURCE: 编译器使用后,直接丢弃这种策略的注释

RetentionPolicy.CLASS: 编译器将把注解记录在 class 文件中. 当运行 Java 程序时, JVM 不会保留注解。 这是默认值

RetentionPolicy.RUNTIME:编译器将把注解记录在 class 文件中. 当运行 Java 程序时, JVM 会保留注解. 程序可以 通过反射获取该注解

@Target刚刚讲过

@Documented

@Inherited

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值