Java中不明白的小知识-----注解

注解概述

注释:解释代码,给程序员看

注解:Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。 当然它也支持自定义 Java 标注。

用于说明程序,一般在框架中使用。

格式:

@AnnotationName

注解的作用

生成文档:代码中生成对应的JavaDoc API文档

@param @return

【IDEA  JavaDoc工具使用参数】

Other Command Line Arguments :-encodin utf-8 -charset utf-8;

解决中文乱码,因为IDEA默认编码集为UTF-8 Windows GBK

代码检查:继承重写,或者说接口遵从之后的实现中,存在@Override

代码数据获取:通过反射获取指定注解中的一些内容,列如,配置、数据、操作、验证...

Java中预定义的一些注解

@Override:

重写/实现方法的情况下,检查方法声明是否和父类或者接口中的方法声明一致。强制格式检查

@Deprecated

标记当前方法已过时,列如Date日期类内的一些方法

@SuppressWarings("all")

压制警告,可以用于一些代码中存在明确无异常的情况下,压制一些警告

Java中自定义注解

格式:public @interface AnnotationName{ 属性列表;}

public @interface MyAnnotation{

    //属性=>方法形式

}

Annotation注解属性

属性:实际使用注解的方式中,数据的使用方式更加偏向于属性概念

使用:在书写代码中使用==>@MyAnnotation(id = 1 , name="小明" , age = 16)

           利用反射时,会涉及到getxxx方法,通过属性名获取对应值的概念来完成的,但是实际上时利用abstract方法来完成属性概念的

属性使用的格式[实际按照方法格式来操作]:

1.属性的值数据雷系和对应具体数据 ==> 返回值类型和返回的数据

  属性类型支持:基本数据类型;String类型;其他的注解类型;枚举类型(枚举就是一个带有名字的常量,为了更好的阅读性和操作);以上类型对应的数组。

属性值要求:定义属性是可以使用default关键字,加上默认值,该属性在使用的过程中是没有强制要求属性值,如果没有赋予属性值,采用对应的默认值操作,如果赋值,使用对应值;

                     如果注解中有且只有一个value属性,或者说注解中出value属性之外,都有默认值,不管是类,方法,成员变量,包使用当前注解时可以直接在括号内假如对应数据类型赋值

                     如果属性是数组类型,{}大括号保存,并且不同的内容使用逗号隔开

 

2.属性的键名字 ==> 方法的名字

元注解

给予注解的解释,用于约束注解的一些操作问题

例如:

@Retention

标识这个注解怎么保存,是只在代码中,还是编入class文件中,或者是在运行时间可以通过反射访问。

RetentionPolicy.RUNTIME:当前注解会编译生成对应的.class字节码文件,并且可以加载到JVM中,参与代码执行

RetentionPolicy.SOURCE:注解将被编译器丢弃(该类型的注解信息只会保留在源码里,源码经过编译后,注解信息将会被丢弃,不会保留在编译号的class文件里)

@Override

对应属性RetentionPolicy.SOURCE;在代码编译过程中,检查方法格式是否正确,不参与代码的运行和解析

@Documented

标记这些注解是否包含在用户文档中,是否可以头盖骨JavaDoc工具,生成对应的API文档

@Target

标记这个注解应该是哪个Java成员

属性:

          ElementType.TYPE:当前注解可以用于类声明;

          ElementType.METHOD:当前注解可以用于方法声明位置

          Element Type.FIELD:当前注解可以用于成员变量声明位置

注解使用总结

  1. 注解以后大多数情况下,都是使用过程,而不是自定义,会使用到框架中与处理好的注解
  2. 注解是给谁用的?
    a.编译器
    b.解析代码使用
    c.JVM运行代码使用
  3. 注解是一个标签,有时候是做标记的,有时候标签是有属性的

 

 

 

 

 

 

 

 

 

 

发布了18 篇原创文章 · 获赞 31 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42597414/article/details/104767811