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、注解有什么作用

注解主要功能有以下几点:

  1. 编写文档
    通过代码里标识的元数据生成文档,这一点与注释类似。

  2. 代码分析
    通过代码里标识的元数据对代码进行分析,一般使用反射获取注解信息。

  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);    }}
3 0
原创粉丝点击