码迷,mamicode.com
首页 > 编程语言 > 详细

Java千百问_03基础语法(019)_注解是什么

时间:2016-06-26 09:13:03      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

点击进入_更多_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);
    }
}

Java千百问_03基础语法(019)_注解是什么

标签:

原文地址:http://blog.csdn.net/ooppookid/article/details/51761368

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!