当前位置: 首页> 健康> 知识 > Java常用的三种注解

Java常用的三种注解

时间:2025/8/23 9:09:00来源:https://blog.csdn.net/m0_65347933/article/details/140360570 浏览次数:0次

1、 基本注解

一、注解的概念

    1、注解也叫元数据,是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。注解的形式是“@+单词”。 在不改变原有逻辑的情况下,使用注解在源文件中嵌入一-些补充信息。

    2、其实同class、interface一样,注解也是一种类型。

二、注解的作用

    (1)生成文档,通过代码里标识的元数据生成javadoc文档。

    (2)编译检查,通过代码里标识的元数据让编译器在编译期间进行检查验证。

    (3)编译时动态处理,编译时通过代码里标识的元数据动态处理,例如动态生成代码。

    (4)运行时动态处理,运行时通过代码里标识的元数据动态处理,例如使用反射注入实例。

三、三种类型的注解

    (1)第一类是Java自带的标准注解。

              @Override:告诉编译器检查当前方法是否覆盖了父类的方法。

              @Deprecated:标示该 方法已经过时,在高版本的代码中进行调用,编译该方法时会进行警告。

              @SuppressWarnings:抑制编译器警告,取消显示的编译器警告信息。

@ Override举例:

Student类的父类是Object类,Object类含有toString()方法,不含有study()方法

@Deprecated举例:

代码:

public class Student {//标记此方法已经过时,在高版本的类中调用此方法时,会显示“过时”警告信息@Deprecatedpublic void study(){}
}

@SuppressWarnings举例:

public class Student {//抹除因为没有启用泛型产生的警告@SuppressWarnings("rawtypes")public List list=new ArrayList();}

@SuppressWarning可以定义成员属性,也可以定义类。

2 、元注解

第二类是元注解(Meta Annotation),也就是用于定义注解的注解。

    @Target:用于指定被修饰的Annotation可用于什么地方

    @Retention:表示需要在什么级别保存该注解信息

    @Documented:表示该注解包含在Javadoc中

    @Inherited:允许子类继承父类中的注解

1、@Target:指定了注解应用的地方,取值如下:

    ElementType.ANNOTATION_TYPE:可以给一个注解进行注解

    ElementType.TYPE:可以给接口、类、枚举等进行注解

    ElementType.FIELD:可以给字段、枚举的常量注解

    ElementType.METHOD:可以给方法注解

    ElementType.PARAMETER:可以给方法参数注解

    ElementType.cONSTRUCTOR:可以给构造方法注解

    ElementType.LOCAL_VARIABLE:可以给局部变量注解

    ElementType.PACKAGE:可以给包进行注解

2、@Retention:当Retention应用到某个注解上表示该注解的存活时间,取值如下:

    RetentionPolicy.soURCE:注解只存在源码阶段,编译器编译时注解失效。

    RetentionPolicy.CLASS:注解保留到编译进行的时候,并不会被加载到JVM中。

    RetentionPolicy.RUNTIME:注解保留到程序进行的时候,会被加裁到JVM中,在程序运行的时候可以获取这些注解信息。

3、 自定义注解-1

第三类是自定义注解,根据自己的需求定义注解,并可用元注解对自定义注解进行注解。语法:

    public @interface 注解名称{ }

根据Annotaion是否包含成员变量,可以把注解分成两类:

    (1)标记注解:没有成员变量的注解类型,该类型注解只提供存在与否的标识信息,例如@Override

    (2)元数据注解:包含成员变量的注解,该类型注解可以接受更多的元数据。

代码:

package cn.edu.xync.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target(ElementType. TYPE)  //表明该自定叉注解可以应用到什么位置@Retention(RetentionPolicy.RUNTIME) //表明该注解能存活到什么时候public @interface MyAnnotation {//此时该注解为空,表明该自定义注解是一个标记注解String name();  //注解中定义的成员变量后面必须加括号(看着像定义方法)int age();  //包含了成员变量的注解称为元数据注解//成员变量的访问权限只能是共有或者缺省,不能是私有或者受保护
}

在Student类中使用注解@MyAnnotation

总结:

       在Java中,如果你声明了一个变量但没有给它赋初始值,那么这个变量将被赋予默认值。以下是一些常见数据类型的默认值:整型(byte、short、int、long)、浮点型(float、double)、字符型(char)、布尔型(boolean)、引用类型(对象、数组),

    这些默认值在Java中被称为缺省值,它们在变量声明时自动赋予,可以通过明确赋值来覆盖这些缺省值。

4、 自定义注解-2

自定义注解设置默认值,在使用时,可以不赋值

修改:@Target(ElementType. METHOD

public interface MyInterface {@MyAnnotationvoid work();
}

修改:@Target(ElementType. FIELD)

public class Student implements Serializable {//抹除因为没有启用泛型产生的警告@SuppressWarnings("rawtypes")@MyAnnotationpublic List list=new ArrayList();
}

5、 自定义注解-3

修改:@Target(ElementType.CONSTRUCTOR)

package cn.edu.xync.annotation;import java.io.Serializable;import java.util.ArrayList;import java.util.List;@SuppressWarnings("serial")//元数据注解需要给成员变量赋值public class Student implements Serializable {//抹除因为没有启用泛型产生的警告@SuppressWarnings("rawtypes")public List list=new ArrayList();private String name;private int age;@Overridepublic String toString() {return "";}@Deprecatedpublic void study(){}@MyAnnotation(name="李四",age=20)public Student(){super();}@MyAnnotation(name="李四",age=20)public Student(String name, int age) {super();this.name = name;this.age = age;}}
修改:@Target(ElementType.PARAMETER)
@Deprecatedpublic void study(@MyAnnotation(name="李四",age=20) String type){}

关键字:Java常用的三种注解

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: