网站首页 > java教程 正文
1.1、什么是注解
Java注解它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。
Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。
1.2、注解的应用
1.生成文档这是最常见的,也是java 最早提供的注解;
2.在编译时进行格式检查,如@Override放在方法前,如果你这个方法并不是覆盖了超类方法,则编译时就能检查出;
3.跟踪代码依赖性,实现替代配置文件功能,比较常见的是spring 2.5 开始的基于注解配置,作用就是减少配置;
4.在反射的 Class, Method, Field 等函数中,有许多于 Annotation 相关的接口,可以在反射中解析并使用 Annotation。
1.3、Java自带的标准注解(内置注解)
包括@Override、@Deprecated、@SuppressWarnings等,使用这些注解后编译器就会进行检查。
@Override
简单来说@override注解是告诉编译器,下面的方法是重写父类的方法。如果不写@override注解去直接重写方法,编译器是不会判断你是不是正确重写了父类中的方法的。如重写方法时参数与父类不同,程序是不会提示报错的。这会留下一个潜在的bug。当你写了@override注解时,程序会判断你是否正确的重写了父类的对应方法。而且加上此注解后,程序会自动屏蔽父类的方法。
@Deprecated
此注解可以用在方法,属性,类上,表示不推荐程序员使用,但是还可以使用。在新版本中有其他方法或类可以代替这个使用,以后的版本也不会再更新这个方法或类
@SuppressWarnings
作用是屏蔽一些无关紧要的警告。使开发者能看到一些他们真正关心的警告。从而提高开发者的效率。可以标注在类、字段、方法、参数、构造方法,以及局部变量上。告诉编译器忽略指定的警告,不用在编译完成后出现警告信息。
示例:
@SuppressWarnings(“unchecked”)告诉编译器忽略 unchecked 警告信息,
如使用List,ArrayList等未进行参数化产生的警告信息。
@SuppressWarnings(“unchecked”, “deprecation”)
告诉编译器同时忽略unchecked和deprecation的警告信息。
@SuppressWarnings(value={“unchecked”, “deprecation”})
等同于@SuppressWarnings(“unchecked”, “deprecation”)
抑制所有类型的警告:
@SuppressWarnings(“all”)
public void test(){
}
1.4、Java元注解
元注解是java API提供的,是用于修饰注解的注解,通常用在注解的定义上
@Target (重点:目标限定)
@Retention (重点:保存策略限定)
@Documented
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented@Inherited
public @interface MthCache {
String key();
}
@Target 注解
功能:指明了修饰的这个注解的使用范围,即被描述的注解可以用在哪里。
ElementType的取值包含以下几种:
TYPE:类,接口或者枚举
FIELD:域,包含枚举常量
METHOD:方法
PARAMETER:参数
CONSTRUCTOR:构造方法
LOCAL_VARIABLE:局部变量
ANNOTATION_TYPE:注解类型
PACKAGE:包
@Retention 注解
功能:指明修饰的注解的生存周期,即会保留到哪个阶段。
RetentionPolicy的取值包含以下三种:
SOURCE:注解只保留在源码中,当Java文件编译成class文件的时候,注解被遗弃;
CLASS:编译级别保留,编译后的class文件中存在,在jvm运行时丢弃,这是默认值。
RUNTIME: 运行级别保留,编译后的class文件中存在,在jvm运行时保留,可以被反射调用。
这3个生命周期分别对应于:Java源文件(.java文件) —> .class文件 —> 内存中的字节码。
上面三种类型生命周期:SOURCE<CLASS<RUNTIME,使用RUNTIME会包含前面两个生命周期,同样如果使用CLASS也会包含SOURCE的生命周期。
@Documented 注解
功能:指明修饰的注解,可以被例如javadoc此类的工具文档化,只负责标记,没有成员取值。
@Inherited注解
功能:允许子类继承父类中的注解。
猜你喜欢
- 2024-10-12 Java文档注释四种_Java注解(java注释格式范例)
- 2024-10-12 Java注解原理详解(4大原理步骤)(java注解的工作原理)
- 2024-10-12 Java核心知识2:注解机制详解(java核心技术注解在哪一章)
- 2024-10-12 Java注释案例(java中注释有几种及用法)
- 2024-10-12 JAVA注释规范(java注释格式范例)
- 2024-10-12 Java注解(Annotation)简介(java注解documented)
- 2024-10-12 Java 第二天 - Java 注释(java里面的注释)
- 2024-10-12 Java 注解详解(java注解教程)
- 2024-10-12 java笔记 程序注释(java程序的注释符号有哪些)
- 2024-10-12 Java注释文档详解(java文档注释是什么)
你 发表评论:
欢迎- 07-15采用Oracle OSB总线进行服务注册和接入
- 07-15javaEE 新闻管理系统 oracle11+tomcat6
- 07-15从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 07-15如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 07-15【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 07-15【mykit-data】 数据库同步工具(数据库表同步工具)
- 07-15[Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- 07-15Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- 最近发表
-
- 采用Oracle OSB总线进行服务注册和接入
- javaEE 新闻管理系统 oracle11+tomcat6
- 从Oracle演进看数据库技术的发展(oracle数据库发展史)
- 如何升级oracle数据库安全补丁(oraclepsu补丁升级)
- 【权威发布】关于Oracle WebLogic Server未授权远程代码执行高危漏洞的预警通报
- 【mykit-data】 数据库同步工具(数据库表同步工具)
- [Java速成] 数据库基础,Connector/J、JDBC、JPA的关系(day 7)
- Google前工程主管“入住”Oracle(google浏览器找不到以前的书签)
- Oracle数据库云服务系列新增前所未有的企业级功能
- 直播预告丨如何实现Oracle存储过程到java的一键转化
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)