`
cucaracha
  • 浏览: 141910 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A8f3fa2f-18ce-3862-897a-5d2209197c90
Java NIO.2
浏览量:88196
7a076ba7-8ec8-3241-aa3c-67bb2f7856a2
Java EE 7 简明教...
浏览量:36838
社区版块
存档分类
最新评论

Java 中的预定义 Annotation 类型

阅读更多
在 Java SE API 中预定义了一系列 Annotation。有的用于 Java 编译器,有的用于 Annotation。

1、用于编译器的 Annotation

定义在 java.lang 包中的 @Deprecated @Override 和 @SuppressWarnings 注释。

@Deprecated
@Deprecated 用来标记某个元素不赞成使用。如果应用程序使用的类、方法或字段上添加了 @Deprecated,那么如果在程序中使用了被注释的元素,编译器将会生成警告信息。也可以使用 JavaDoc 的 @deprecated 来标记某个元素不赞成使用,用法和 @Deprecated 类似,不过第一个字母是小写的 d。下面看看例子:

// Javadoc comment follows
    /**
     * @deprecated
     * explanation of why it was deprecated
     */
    @Deprecated
    static void deprecatedMethod() { }
}


@Override
@Override 用来标记当前的元素重写父类中的元素。例如:

// mark method as a superclass method
   // that has been overridden
   @Override 
   int overriddenMethod() { }


虽然在重写方法的时候这个 Annotation 并没有强制要求添加,但是如果添加了 @Override 标记,当你的重写出现错误的时候,编译器会产生一个错误。

@SuppressWarnings
这个注释会让编译器隐藏特定的警告信息。例如下面的例子中使用了不推荐的方法,因此编译器会产生警告,但是加上了 @SuppressWarnings 注释后,编译器就会隐藏这个警告信息。

   // use a deprecated method and tell 
   // compiler not to generate a warning
   @SuppressWarnings("deprecation")
    void useDeprecatedMethod() {
        // deprecation warning
        // - suppressed
        objectOne.deprecatedMethod();
    }


每个编译器的警告都有特定的分类。Java 语言规范列出了两个分类:deprecation 和 unchecked 分类,想要隐藏多个分类下的警告信息,可以使用下面的语法:

@SuppressWarnings({"unchecked", "deprecation"})


@SafeVarargs
@SafeVarargs 注释只能用于可变长参数的方法或构造方法上,并且方法必须为 final 或 static,否则编译会报错。如果开发者确认可变长参数在使用泛型类的时候,不会产生潜在的安全问题,那么可以使用这个注释来隐藏编译器的警告信息。
@FunctionalInterface
@FunctionalInterface 是在 Java 8 中引入的新注释,表明被注释的接口是“函数式接口”。

2、用在 Annotation 上的 Annotation

用于 Annotation 的 Annotation 被称为元 Annotation,它们定义在 java.lang.annotation 包中。

@Retention
被 @Retention 注释的 Annotation 将会被指定存储的方式:

    RetentionPolicy.SOURCE 被注释的 Annotation 只存在于源码中,会被编译器忽略。
    RetentionPolicy.CLASS 被注释的 Annotation 会被编译器读取,但是会在运行时被虚拟机忽略。
    RetentionPolicy.RUNTIME 被注释的 Annotation 在运行时会被虚拟机读取。

@Documented
使用 Java 文档生成工具生成文档的时候,被 @Documented 注释的 Annotation 将会生成文档,默认情况下,Annotation 不会生成文档。

@Target
@Target 将会指定 Annotation 将会被允许使用在哪些 Java 元素上。@Target 可以使用下面的值:

    ElementType.ANNOTATION_TYPE 可以用在 Annotation 上。
    ElementType.CONSTRUCTOR 可以用在构造方法上。
    ElementType.FIELD 可以用在成员变量上。
    ElementType.LOCAL_VARIABLE 可以用在局部变量上。
    ElementType.METHOD 可以用在方法上。
    ElementType.PACKAGE 可以用在包声明上。
    ElementType.PARAMETER 可以用在方法的参数上。
    ElementType.TYPE 可以用在类的任何元素上。

@Inherited
@Inherited 注释的 Annotation 具备继承性(默认是不具备的)。如果 @Inherited 注释的 Annotation 用于某个类上,那么这个类的子类也被继承了父类的 Annotation。

@Repeatable
@Repeatable 是 Java 8 引入的,被 @Repeatable 注释的 Annotation 就是可重复 Annotation,即在同一个 Java 元素上可以使用相同的 Annotation 注释多次。

文章来源:http://www.aptusource.org/2014/03/predefined-annotation-types/
分享到:
评论

相关推荐

    JDK5.0 Java Annotation 介绍(ppt)

    2. **自定义 Annotation**:除了预定义的 Annotation,开发者还可以定义自己的 Annotation 类型,并通过注解处理器来处理这些 Annotation,实现特定的功能。 3. **运行时可见性**:有些 Annotation 在编译时有效,...

    Annotation技术

    自定义Annotation实际上自动继承了`java.lang.annotation.Annotation`接口,但不能继承其他Annotation类型或接口。这使得Annotation成为一种单继承的类型。 总之,Annotation技术是Java编程中的一个强大工具,它...

    Java Annotation手册

    在Java编程语言中,注解(Annotation)是一种元数据,它提供了在编译时或运行时处理代码的一种方式。通过注解,开发者可以向编译器或JVM提供有关代码的附加信息,而这些信息通常不直接影响程序的执行,但可以用于...

    java1.5 annotation注释源代码

    注解有预定义的系统注解(如`@Override`, `@Deprecated`, `@ SuppressWarnings`等)和自定义注解两种类型。自定义注解需要通过@interface关键字来定义,并可以包含一些元素(或称为成员),这些元素可以有默认值。 ...

    Java Annotation的讲解和例子

    - 标准注解:Java SE和Java EE提供了预定义的注解,如@Override、@Deprecated、@ SuppressWarnings等。 - 自定义注解:开发者可以根据需求自定义注解,用于特定的处理逻辑或元数据存储。 二、注解的作用 1. 编译...

    JavaAnnotation必须掌握的特性Java开发Ja

    Java注解(Java Annotation)是Java编程语言中的一个重要特性,它提供了一种元数据的方式,允许程序员在代码中嵌入额外的信息。这些信息可以被编译器、JVM或者特定工具在编译时或运行时读取,用于执行各种验证、生成...

    Java Annotation入门.doc

    3. 预定义注解:Java提供的一些预定义注解,如`@Retention`、`@Target`等,用于控制注解的生命周期和应用范围。 4. 自定义注解:开发者根据需求自定义的注解,如上面的`RequestForEnhancement`。 总结,Java注解是...

    hibernate annotation 中文文档

    《Hibernate Annotation 中文文档》是Java开发者们的重要参考资料,它详细介绍了如何在Hibernate框架中使用注解进行对象关系映射(ORM)。Hibernate是一款强大的开源Java持久化框架,它简化了数据库与Java对象之间的...

    annotation

    在Java中,有三个预定义的注解类型,它们分别是: 1. `@Override`:此注解用于标记一个方法,表明该方法是重写其父类的方法。如果方法实际上并未重写任何父类方法,编译器会报错。这有助于防止因拼写错误或方法签名...

    java annotation 手册.doc

    - 标准注解:Java 语言本身提供的一些预定义注解,如 `@Override`、`@Deprecated`、`@ SuppressWarnings` 等。 - 自定义注解:开发者可以根据需求定义自己的注解类型,扩展元数据功能。 3. 注解的处理:Java ...

    java 注解annotation的使用以及反射如何获取注解

    Java预定义了四个元注解:@Retention、@Target、@Documented和@Inherited。 - @Retention:定义注解的生命周期,有SOURCE、CLASS和RUNTIME三个策略。SOURCE表示注解只在源代码中存在,编译后会被丢弃;CLASS表示...

    浙大软件学院培训课件java reflection annotation

    Java预定义了一些注解,如@Override、@Deprecated,同时允许开发者自定义注解,并通过处理器(Annotation Processor)进行解析。 在浙大软件学院的培训课程中,可能会深入讲解以下内容: 1. 反射基础:如何获取...

    JDK5.0-Java Annotation 介绍

    综上所述,Java Annotation提供了一种强大的机制,使得我们能够在代码中添加元信息,提高代码的可读性,简化配置,增强编译时和运行时的检查,以及实现各种自定义逻辑。随着Java生态系统的不断发展,注解的应用将...

    annotation详解

    注解(Annotation)是Java编程语言中的一个重要特性,自Java 5版本引入,它提供了一种安全的方法来将元数据与代码关联。元数据是关于数据的数据,可以用来提供程序的额外信息,如编译器提示、运行时检查、代码生成等...

    java jdk api中文开发文档(免币)

    3. **异常处理**:Java异常处理是通过try-catch-finally结构实现的,文档详细列出了各种预定义的异常类以及如何自定义异常。 4. **集合框架**:Java集合框架包括List、Set、Queue和Map等接口,以及ArrayList、...

    Annotation(注解)详细教程,jdk新特性

    在Java中,元注解(meta-annotation)用于定义自己的Annotation类型。元注解包括`@Retention`(控制Annotation的生命周期,如是否存储在class文件或运行时可见)、`@Target`(指定Annotation可以应用到哪些程序元素...

    Java中文参考手册.zip

    API(Application Programming Interface)是一组预定义的函数、类、接口和常量,程序员可以使用它们来实现特定功能,而无需了解底层实现细节。 手册中详细阐述了Java的核心概念,如类、对象、继承、封装和多态性。...

    511.509.JAVA基础教程_枚举类与注解-jdk8新特性:类型注解(511).rar

    Java预定义了一些标准注解,如@Override、@Deprecated和@ SuppressWarnings等。同时,开发者也可以自定义注解,通过元注解来控制其行为。例如,创建一个简单的注解来记录方法执行时间: ```java import java.lang....

Global site tag (gtag.js) - Google Analytics