Java注释和注解的区别

简介: Java注释和注解的区别

1 注释

很容易知道就是让自己看,或者别人方便阅读你的代码

2 注解

2.1 注解的作用

1) 不是程序本身,可以对程序作出解释。(这一点跟注释没什么区别)


2) 可以被其他程序(比如:编译器等)读取。(注解信息处理流程,是注解和注释的重大区别,如果没有注解信息处理流程,则注解毫无意义)


①编写文档:通过代码里标识的注解生成文档【生成文档doc文档】

②代码分析:通过代码里标识的注解对代码进行分析【使用反射】

③编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查


2.2 注解的格式:

1) 注解是以”@注释名”在代码中存在,还可以添加一些参数


值,例如@SuppressWarnings(value=”unchecked”)。


2.3 注解在哪里使用

1) 可以附加在 package,class,method,field 等上面,相当于给它们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元素的访问。


2.4 内置的注解

1) @Override :标识方法是重写的方法


2) @Deprecated :标识的方法不建议使用


3) @SuppressWarnings:用来抑制编译时的警告信息@SuppressWarinings 需要提供参数才能正常使用,这些参数都是已经定义好的,我们只需要选择就可以了。


3 自定义注解:

3.1 自定义注解的语法

格式:

           元注解

           public @interface 注解名称{

               属性列表;

           }

 

本质:注解本质上就是一个接口,该接口默认继承Annotation接口

public interface MyAnno extends java.lang.annotation.Annotation {}


属性:接口中的抽象方法

要求:

1. 属性的返回值类型有下列取值


基本数据类型

String

枚举

注解

以上类型的数组

2. 定义了属性,在使用时需要给属性赋值


1.如果定义属性时,使用default关键字给属性默认初始化值,则使用注解时,可以不进行属性的赋值。

2.如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接定义值即可。

3.数组赋值时,值使用{}包裹。如果数组中只有一个值,则{}可以省略

3.2 元注解

元注解:用于描述注解的注解


@Target:描述注解能够作用的位置

ElementType取值:

TYPE:可以作用于类上

METHOD:可以作用于方法上

FIELD:可以作用于成员变量上


@Retention:描述注解被保留的阶段

@Retention(RetentionPolicy.RUNTIME):当前被描述的注解,会保留到class字节码文件中,并被JVM读取到

@Documented:描述注解是否被抽取到api文档中

@Inherited:描述注解是否被子类继承

在程序使用(解析)注解:获取注解中定义的属性值

1. 获取注解定义的位置的对象  (Class,Method,Field)

2. 获取指定的注解

getAnnotation(Class)

//其实就是在内存中生成了一个该注解接口的子类实现对象

public class ProImpl implements Pro{
       public String className(){
       return "cn.itcast.annotation.Demo1";
         }
         public String methodName(){
     return "show";
 }
}

3. 调用注解中的抽象方法获取配置的属性值

目录
相关文章
|
21天前
|
XML Java 编译器
Java注解的底层源码剖析与技术认识
Java注解(Annotation)是Java 5引入的一种新特性,它提供了一种在代码中添加元数据(Metadata)的方式。注解本身并不是代码的一部分,它们不会直接影响代码的执行,但可以在编译、类加载和运行时被读取和处理。注解为开发者提供了一种以非侵入性的方式为代码提供额外信息的手段,这些信息可以用于生成文档、编译时检查、运行时处理等。
59 7
|
2月前
|
XML Java 编译器
Java学习十六—掌握注解:让编程更简单
Java 注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。
101 43
Java学习十六—掌握注解:让编程更简单
|
27天前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
67 14
|
26天前
|
Java 编译器 数据库
Java 中的注解(Annotations):代码中的 “元数据” 魔法
Java注解是代码中的“元数据”标签,不直接参与业务逻辑,但在编译或运行时提供重要信息。本文介绍了注解的基础语法、内置注解的应用场景,以及如何自定义注解和结合AOP技术实现方法执行日志记录,展示了注解在提升代码质量、简化开发流程和增强程序功能方面的强大作用。
66 5
|
22天前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
22 1
|
26天前
|
Java
Java 中的注释
1. 单行注释:// 2. 多行注释:/* */ 3. 文档注释::/** **/
|
1月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
53 8
|
1月前
|
Java 开发者 Spring
[Java]自定义注解
本文介绍了Java中的四个元注解(@Target、@Retention、@Documented、@Inherited)及其使用方法,并详细讲解了自定义注解的定义和使用细节。文章还提到了Spring框架中的@AliasFor注解,通过示例帮助读者更好地理解和应用这些注解。文中强调了注解的生命周期、继承性和文档化特性,适合初学者和进阶开发者参考。
63 14
|
1月前
|
前端开发 Java
[Java]讲解@CallerSensitive注解
本文介绍了 `@CallerSensitive` 注解及其作用,通过 `Reflection.getCallerClass()` 方法返回调用方的 Class 对象。文章还详细解释了如何通过配置 VM Options 使自定义类被启动类加载器加载,以识别该注解。涉及的 VM Options 包括 `-Xbootclasspath`、`-Xbootclasspath/a` 和 `-Xbootclasspath/p`。最后,推荐了几篇关于 ClassLoader 的详细文章,供读者进一步学习。
37 12
|
1月前
|
Java
Java代码解释++i和i++的五个主要区别
本文介绍了前缀递增(++i)和后缀递增(i++)的区别。两者在独立语句中无差异,但在赋值表达式中,i++ 返回原值,++i 返回新值;在复杂表达式中计算顺序不同;在循环中虽结果相同但使用方式有别。最后通过 `Counter` 类模拟了两者的内部实现原理。
Java代码解释++i和i++的五个主要区别