Java千百问_03基础语法(019)_注解是什么
来源:互联网 发布:湿度控制器淘宝 编辑:程序博客网 时间:2024/05/21 11:34
点击进入_更多_Java千百问
1、注解是什么
java中的注解(Annotation),也叫元数据。是Java 5以后版本引入的一个特性。
注解与类、接口、枚举是在同一个层次,可以用来标注包、类、字段、方法、局部变量、方法参数等元素,达到对这些元素的描述和说明。
注解是可以允许jvm在运行中读取它,这一点与注释完全不同。并且包含多种加载策略,可以灵活配置。
了解注解、注释区别看这里:注解、注释有什么区别
如何自定义注解看这里:如何使用注解
2、注解有哪些加载策略
注解包含3中可配置的加载策略(RetentionPolicy),根据不同的需要进行不同的配置,具体如下:
public enum RetentionPolicy { // 此类型会被编译器丢弃 SOURCE, // 此类型注解会保留在class文件中,但JVM会忽略它,默认策略 CLASS, // 此类型注解会保留在class文件中,JVM会读取它 RUNTIME}
3、注解有什么作用
注解主要功能有以下几点:
编写文档
通过代码里标识的元数据生成文档,这一点与注释类似。代码分析
通过代码里标识的元数据对代码进行分析,一般使用反射获取注解信息。编译检查
通过代码里标识的元数据让编译器能够实现基本的编译检查,例如方法覆盖@Override。
4、JDK有那些内置注解
jdk提供了若干内置注解,常见的如下:
@Override
它用来对覆盖父类方法、实现接口方法进行标记,如果被标记的方法并没有实际覆盖父类方法,则编译器会发出错误警告。
例子:
public class SuperTest { public String tostring() { return "父类"; }}public class Test extends SuperTest { @Override public String tostring() { return "子类注解"; }}
@Deprecated
它用来标记过期方法、不推荐使用方法。对于某些已经过期、不推荐使用的方法,但又不能直接删除(有其他地方仍使用),我们会使用@Deprecated进行标记,当使用这些方法时,会在编译时进行提示。
例子:
public class Test { public static void main(String[]args) { // 使用DeprecatedClass里声明被过时的方法 DeprecatedClass.DeprecatedMethod(); }}class DeprecatedClass { @Deprecated public static void DeprecatedMethod() { }}
@SuppressWarnings
它用来标记不想被提示的警告,警告类型可以通过参数控制,具体如下:
deprecation,使用了过时的类或方法时的警告
unchecked,执行了未检查的转换时的警告
fallthrough,当Switch程序块直接通往下一种情况而没有Break时的警告
path,在类路径、源文件路径等中有不存在的路径时的警告
serial,当在可序列化的类上缺少serialVersionUID定义时的警告
finally,任何finally子句不能正常完成时的警告
all,关于以上所有情况的警告
例子:
public class Test { public static Listlist = newArrayList(); @SuppressWarnings("unchecked") public void add(String data) { list.add(data); }}
- Java千百问_03基础语法(019)_注解是什么
- Java千百问_03基础语法(022)_元注解是什么
- Java千百问_03基础语法(018)_注释是什么
- Java千百问_03基础语法(020)_注解、注释有什么区别
- Java千百问_03基础语法(021)_如何自定义注解
- Java千百问_03基础语法(016)_main方法是什么
- Java千百问_03基础语法(013)_>、>>、>>>有什么区别
- Java千百问_03基本语法(005)_二进制是怎样做位运算的
- Java千百问_03基础语法(012)_transient关键字有什么用
- Java千百问_03基础语法(014)_volatile关键字有什么用
- Java千百问_03基础语法(015)_System.exit(0)有什么用
- Java千百问_03基础语法(017)_static有什么用
- Java千百问_03基本语法(001)_局部变量、类变量、实例变量有什么区别
- Java千百问_03基本语法(002)_java都有哪些关键字
- Java千百问_03基本语法(003)_public、privite、protected有什么区别
- Java千百问_03基本语法(004)_java中的运算符都有哪些
- Java千百问_03基本语法(006)_java运算符的优先级是怎样的
- Java千百问_03基本语法(007)_if else如何使用
- DPDK多核多线程机制简析
- c语言结构体实验记录1
- 使用TimeQuest时序分析器
- 初学CentOS——盘符基本命令
- 虚拟货币交易平台开发
- Java千百问_03基础语法(019)_注解是什么
- ES6 之 const 的说明
- Activity启动过程源码分析
- 用FragmentTabHost 实现底部菜单
- 完美长方体是不可能存在的 第六章
- ListView优化之ViewHolder
- redis 的数据类型及命令
- php 变量定义方法
- Android App卡顿慢优化之多线程优化