Java中的Annotation (一、系统内建的Annotatiion)

对于Annotation,是Java5以来的新特性,JDK5引入了Metadata(元数据)。所谓元数据就是关于数据的数据。在编程语言上下文中,元数据是添加到程序元素如方法、字段、类和包上的额外信息。 Java中的Annotation就是一种元数据,它提供一些本来不属于程序的数据,比如:一段代码的作者或者告诉编译器禁止一些特殊的错误。一个Annotation对代码的执行没有什么影响。Annotations使用@annotation的形式应用于代码:类(class),属性(field),方法(method)等等。一个Annotation出现在上面提到的开始位置,而且一般只有一行,也可以包含有任意的参数。

Annotation一般作为一种辅助途径,应用在软件框架或工具中,在这些工具类中根据不同的annontation注解信息采取不同的处理过程或改变相应程序元素(类、方法及成员变量等)的行为。在spring 、struts和hibernate中广泛使用了注释,因此有必要了解下java中的 Annotation。

Annotation的核心的工作原理就是借助一个操作类通过反射的方式提取Annotation信息,进行操作。由此可见反射机制在java中用途广泛。

系统内建的 Annotation

主要有三种:

@Override           // 声明某一个方法是用于覆盖父类中的方法,如果不是,就会在编译时报错

@Deprecated       //声明某一个方法 ,某一个类,不建议使用。已经过时。

@SuppressWarnings   //压制一些警告,比如泛型uncheck ,方法unuse

下面请看关于这三种注释的demo

1、@Override

覆盖父类接口中未实现的抽象方法。

package com.iip;

interface Demo{
   String getInfo();
}

class Child implements Demo{
    @Override                  //覆盖父类中的方法
    public String getInfo(){
        return "child";
    }
}
public class AnnotationDemo {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Child d = new Child();
        System.out.println(d.getInfo());
    }

}

2、@Deprecated

直接在上面代码中@Override下面加入一行@Deprecated

class Child implements Demo{
    @Override
    @Deprecated
    public String getInfo(){
        return "child";
    }
}

通过javac编译就会发现

提醒你使用了过时的API。

注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。

加入 -Xlint:deprecation 后再次编译

便提示了详细信息。

3、@SuppressWarnings

还是在上述代码中,在main函数上面加入@SuppressWarnings("deprecation")

    @SuppressWarnings("deprecation")
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Child d = new Child();
        System.out.println(d.getInfo());
    }

再次编译将不会出现警告

或者也可以这样写 @SuppressWarnings(value={"deprecation"})

value接收的是一个数组,你可以加入多个参数,比如@SuppressWarnings(value={"deprecation","unchecked"})

@SuppressWarnings需要加入参数,这些参数都是已经定义好的了,定义的参数有如下几个。

deprecation   使用了过时的类或方法时的警告

unuse    定义的方法没用使用的警告

unchecked  执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型

fallthrough   当 Switch 程序块直接通往下一种情况而没有 Break 时的警告

path   在类路径、源文件路径等中有不存在的路径时的警告

serial 当在可序列化的类上缺少 serialVersionUID 定义时的警告

finally    任何 finally 子句不能正常完成时的警告

all    关于以上所有情况的警告

明天将会继续学习如何构造自定义的Annotation。

时间: 2024-10-13 13:01:34

Java中的Annotation (一、系统内建的Annotatiion)的相关文章

Java中的Annotation(2)----Annotation工作原理

Java中的Annotation(2)----Annotation工作原理 分类: 编程语言2013-03-18 01:06 3280人阅读 评论(6) 收藏 举报 上一篇文章已经介绍了如何使用JDK的三个标准Annotation,本文将介绍Annotation的原理,以及如何自定义Annotation,并利用Annotation来完成一些实际的功能. 定义Annotation 定义新的Annotation类型使用@interface关键字,这从一定意义上说明Annotation和接口的定义是有

Java中的Annotation (二、自定义Annotation)

今天学习如何开发一个自定义的Annotation.要想使Annotation有意义,还需要借用前几天学习的反射机制. 下面就开始今天的学习吧. Annotation的定义格式.它类似于新创建一个接口类文件,但为了区分,我们需要将它声明为 @interface public @interface Annotation名称{ 数据类型 变量名称(); } 下面声明了一个Annotation public @interface MyAnnotation { } 使用这个Annotation @MyAn

java中的Annotation

java中包含5个基本的Annotation: @Override @Deprecated @SuppressWarnings @SafeVarargs @FunctionalInterface ……待续

java中根据hibernate配置文件自动建表

1.对与java项目,做数据库迁移时,都会用的数据脚本. 2.当引入hibernate时,可以创建数据库表的配置文件.可以根据表的配置文件自动在数据库建表.(数据库要预先建立好,因为hibernate只会建表,不会建库) 步骤: 1).在配置文件 hibernate.cfg.cml 中加入参数 ,配置相关数据源参数和pojo文件 <property name="hbm2dll.auto">update</property> <hibernate-confi

C#中的Attribute和Java中的Annotation

/***********注解声明***************/ /** * 水果名称注解 * @author peida * */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface FruitName { String value() default ""; } /** * 水果颜色注解 * @author peida * */ @Target(El

Java中对比两个对象中属性值[反射、注解]

在Java中通常要比较两个对象在修改前与修改后的值是否相同,一般我们采用的是反射技术获取对象的get方法[或其他的方法]获取值并做比较.如果系统将修改的属性名称也显示出来,这样就能更直观的显示类中的哪一个属性的值被修改了.然后Java中只能获取属性的名称,也就是英文标识的属性名,但是一般我们都会在属性后面添加属性的注释,但是Java不提供注释获取的方法.所以我们只能使用另外一种方式来将属性和属性注释关联起来,这就是Java中的@Annotation. public static  Map<Str

Java:注解Annotation(元数据)

本文内容: 注解Annotation的介绍 基本注解的用法 首发日期:2018-07-28 注解Annotation的介绍 Annotation是代码中的特殊标记,能够在编译.类加载.运行时被识别(需要设置),并根据不同的Annotation来执行不同的处理. Annotation可以修饰包.类.构造器.函数.成员变量.局部变量的声明.参数等程序元素.Annotation帮助这些元素来设置元数据,程序从元数据中获取信息来处理这些元素. 元数据可以描述代码间关系或者代码与其它资源的关系,比如说在w

Annotation:系统内建Annotation

1,掌握系统内建的三个Annotation. Annotation被称为元数据特效,也被称为注释,即:使用注释方式,加入一些程序信息. Java.lang.annotation接口是所有Annotaion必须实现的接口. 系统已经内建的三个Annotation: @Override:覆写的Annotation. @Deprecated:不赞成使用的Annotation @SuppressWarning:压制安全警告的Annotation @Overrride @overrride表示方法覆写的正

【java】java中的注解(Annotation)是如何工作的?

Java中的注解是如何工作的? 自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分.开发过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecated这样的注解.这篇文章中,我将向大家讲述到底什么是注解,为什么要引入注解,注解是如何工作的,如何编写自定义的注解(通过例子),什么情况下可以使用注解以及最新注解和ADF(应用开发框架).这会花点儿时间,所以为自己准备一杯咖啡,让我们来进入注解的世界吧. 什么是注解? 用一个词就可以描述注解,那就是元数据,即