您的位置:首页 > 编程语言 > Java开发

Java基础知识_注解

2013-07-14 16:30 453 查看
JAVA注解

Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注解是以‘@注解名’在代码中存在的,根据注解参数的个数,我们可以将注解分为:标记注解、单值注解、完整注解三类。它们都不会直接影响到程序的语义,只是作为注解(标识)存在,我们可以通过反射机制编程实现对这些元数据(用来描述数据的数据)的访问。另外,你可以在编译时选择代码里的注解是否只存在于源代码级,或者它也能在class文件中出现。
@Deprecated的作用是对不应该在使用的方法添加注解,当编程人员使用这些方法时,将会在编译时显示提示信息

一,简单注解:

@SuppressWarnings,其参数有:

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

unchecked,执行了未检查的转换时的警告

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

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

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

finally ,任何 finally 子句不能正常完成时的警告
all,关于以上所有情况的警告

@Target 

    表示该注解用于什么地方,可能的 ElemenetType 参数包括:

    ElemenetType.CONSTRUCTOR 构造器声明

    ElemenetType.FIELD 域声明(包括 enum 实例)

    ElemenetType.LOCAL_VARIABLE 局部变量声明

    ElemenetType.METHOD 方法声明2013/5/12

    ElemenetType.PACKAGE 包声明

    ElemenetType.PARAMETER 参数声明

    ElemenetType.TYPE 类,接口(包括注解类型)或enum声明

 

    @Retention

    表示在什么级别保存该注解信息。可选的 RetentionPolicy 参数包括:
    RetentionPolicy.SOURCE 注解将被编译器丢弃

    RetentionPolicy.CLASS 注解在class文件中可用,但会被VM丢弃

    RetentionPolicy.RUNTIME VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。

    @Documented:将此注解包含在javadoc中

    @Inherited:允许子类继承父类中的注解

@override重写

@overlord重载

二,注解的定义与反射调用

 


注解就相当于你的源程序中要调用的一个类,要在源程序中应用某个注解,要先准备好这个注解类。就像你要调用哪个类,得先有开发好的这个类。

我们先来建立一个简单的注解:
package cn.itcast.day2;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
/*上面的这个叫做元注解,因为注解在编译和运行过程中是否保留均有说法,且默认是只保留到class文件,所以为了看到运行结果,我们将它修改成runtime,意思是保留到运行时*/
public @interface ItcastAnnotation {

}


然后我们来用他注解一个类:
package cn.itcast.day2;

@ItcastAnnotation
public class AnnotationTest {

public static void main(String[] args) {
// TODO 自动生成的方法存根

if (AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){

ItcastAnnotation annotation = (ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
System.out.println(annotation);
}
}
}


输出结果为:@cn.itcast.day2.ItcastAnnotation()

三,为注解增加各种属性

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: