网站首页 > 技术教程 正文
注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后的某个时刻非常方便地使用这些数据。
内置注解
1、Deprecated
应用场合:全部
目的:标记为过时的
2、SuppressWarnings
应用场合:除了包和注解之外的所有情况
目的:阻止某个给定类型的警告信息
参数:
3、Override
应用场合:方法
目的:检查该方法是否覆盖了某一个超类方法
4、FunctionalInterface(jdk1.8新增)
应用场合:接口
目的:指定接口必须为函数式接口,指仅仅只包含一个抽象方法的接口。
5、SafeVarargs(jdk1.7新增)
应用场合:构造函数
目的:在声明具有模糊类型(比如:泛型)的可变参数的构造函数或方法时,Java编译器会报unchecked警告。鉴于这些情况,如果程序员断定声明的构造函数和方法的主体不会对其varargs参数执行潜在的不安全的操作,可使用@SafeVarargs进行标记,这样的话,Java编译器就不会报unchecked警告。
注意:SafeVarargs注解,对于非static或非final声明的方法,不适用,会编译不通过。
元注解
1、Target
作用:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)
public enum ElementType {
/** 标明该注解可以用于类、接口(包括注解类型)或enum声明 */
/** Class, interface (including annotation type), or enum declaration */
TYPE,
/** 标明该注解可以用于字段(域)声明,包括enum实例 */
/** Field declaration (includes enum constants) */
FIELD,
/** 标明该注解可以用于方法声明 */
/** Method declaration */
METHOD,
/** 标明该注解可以用于参数声明 */
/** Formal parameter declaration */
PARAMETER,
/** 标明注解可以用于构造函数声明 */
/** Constructor declaration */
CONSTRUCTOR,
/** 标明注解可以用于局部变量声明 */
/** Local variable declaration */
LOCAL_VARIABLE,
/** 标明注解可以用于注解声明(应用于另一个注解上)*/
/** Annotation type declaration */
ANNOTATION_TYPE,
/** 标明注解可以用于包声明 */
/** Package declaration */
PACKAGE,
/**
* 标明注解可以用于类型参数声明(1.8新加入)
* Type parameter declaration
*
* @since 1.8
*/
TYPE_PARAMETER,
/**
* 类型使用声明(1.8新加入)
* Use of a type
*
* @since 1.8
*/
TYPE_USE
}
2、Retention
作用:表示需要在什么级别保存该注释信息,用于描述注解的生命周期
public enum RetentionPolicy {
/**
* 编译时被丢弃,不包含在类文件中
* Annotations are to be discarded by the compiler.
*/
SOURCE,
/**
* JVM加载时被丢弃,包含在类文件中,默认值
* Annotations are to be recorded in the class file by the compiler
* but need not be retained by the VM at run time. This is the default
* behavior.
*/
CLASS,
/**
* 由JVM 加载,包含在类文件中,在运行时可以被获取到
* 反射可以读取
* Annotations are to be recorded in the class file by the compiler and
* retained by the VM at run time, so they may be read reflectively.
*
* @see java.lang.reflect.AnnotatedElement
*/
RUNTIME
}
3、Documented
作用:用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。
4、Inherited
作用:指定子类可以继承父类的注解,只能是类上的注解,方法和字段的注解不能继承。
备注:
- 类继承关系中,子类会继承父类使用的注解中被@Inherited修饰的注解
- 接口继承关系中,子接口不会继承父接口中的任何注解
- 类实现接口时不会继承任何接口中定义的注解
5、Native
作用:jdk1.8新增,指定字段是一个常量,其值引用native code。
6、Repeatable
作用:jdk1.8新增,在需要对同一种注解多次使用时,往往需要借助Repeatable注解。
自定义注解
简单例子
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface MyAnnotation {
String studentName() default "";
int age() default -1;
}
猜你喜欢
- 2024-10-19 Java 项目编译提示 javax.xml.bind.annotation does not exist 错误
- 2024-10-19 Android annotation包下常用的注解
- 2024-10-19 SpringMVC疑难一:mvc:annotation-dr
- 2024-10-19 Spring 中 AnnotationConfigUtils
- 2024-10-19 spring mvc 配置失效了?(springmvc的配置)
- 2024-10-19 为什么都爱着江南?黛瓦白墙,烟雨朦胧,是文人魂牵梦绕的故乡
- 2024-10-19 Spring框架系列之构造方法底层剖析01
- 2024-10-19 基于.NET6包含DDD,ES,CQRS等概念的开源
- 2024-10-19 spring 中 AnnotationUtils 的常用方法
- 2024-10-19 SpringBoot实战4-Spring基础-IoC容器
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)