网站首页 > 技术教程 正文
注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后的某个时刻非常方便地使用这些数据。
内置注解
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容器
欢迎 你 发表评论:
- 10-23Excel计算工龄和年份之差_excel算工龄的公式year
- 10-23Excel YEARFRAC函数:时间的"年份比例尺"详解
- 10-23最常用的10个Excel函数,中文解读,动图演示,易学易用
- 10-23EXCEL中如何计算截止到今日(两个时间中)的时间
- 10-2390%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 10-23计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- 10-23Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 10-23怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- 最近发表
-
- Excel计算工龄和年份之差_excel算工龄的公式year
- Excel YEARFRAC函数:时间的"年份比例尺"详解
- 最常用的10个Excel函数,中文解读,动图演示,易学易用
- EXCEL中如何计算截止到今日(两个时间中)的时间
- 90%人不知道的Excel神技:DATEDIF 精准计算年龄,告别手动算错!
- 计算工龄及工龄工资(90%的人搞错了):DATE、DATEDIF组合应用
- Excel中如何计算工作日天数?用这两个函数轻松计算,附新年日历
- 怎样快速提取单元格中的出生日期?用「Ctrl+E」批量搞定
- Excel日期函数之DATEDIF函数_excel函数datedif在哪里
- Excel函数-DATEDIF求司龄_exceldatedif函数计算年龄
- 标签列表
-
- 下划线是什么 (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)

本文暂时没有评论,来添加一个吧(●'◡'●)