java新特性(反射和注记)(续)
来源:互联网 发布:淘宝网店开店方案 编辑:程序博客网 时间:2024/05/18 13:27
1.什么是Annotation
Ò在已经发布的JDK1.5(tiger)中增加新的特色叫 Annotation。
Ò
2. 小例子
Annotation提供一种机制,将程序的元素如:类,方法,属性,参数,本地变量,包和元数据联系起来。这样编译器可以将元数据存储在Class文件中。这样虚拟机和其它对象可以根据这些元数据来决定如何使用这些程序元素或改变它们的行为。Òpackage com.yd.test;
Òpublic class MyAnnotation {
Ò @Override
Ò public boolean equals(Object arg0) {
Ò // TODO Auto-generated method stub
Ò return super.equals(arg0);
Ò }
Ò
3. 使用 Annotation的好處 3。代码分析
} É1。文档化(也就是 javaDoc 產生的說明文件可將 metadata 包進去 )
É2。编译时检查
É
4.两种运行方式
同时,annotation运行存在两种方式:运行时、编译时
ß编译时annotation在原代码编译 的时候就起作用,告诉编译器一下信息,编译器根据这个作出一定的判断.java.lang包中有三个标准annotation是编译时注解: 前面使用过的
ß@Override 指明注释的方法覆盖超类的方法
ß@Deprecated 对不再使用的方法进行注释
ß
运行时annotation在程序运行的时候,可以通过反射机制来得到该对象的有关annotation的信息,并依此作出某些操作,这个主要供我们扩张
5.定义Annotation
package com.yd.annotation;
Ò import java.lang.annotation.*;
Ò @Retention(RetentionPolicy.RUNTIME)
Ò @Target(ElementType.FIELD)
Ò public @interface FirstAnnotation {
Ò String value();
Ò
说明:
} Ò@Retention(RetentionPolicy.RUNTIME)这个meta-annotation表示我们创建的FirstAnnotation这个Annotation将会存储在Class文件中,并在java VM运行时加载它。
Ò@Target(ElementType.FIELD)这个meta-annotation表示我们创建的FirstAnnotation将会为描述属性,而interface FirstAnnotation是我们自定义的Annotation,它有一个成员叫value,返回值是String。
6.
@Retention
1.SOURCE //按照规定使用注释,但是并不将它保留到编译后的类文件中
2. CLASS //将注释保留在编译后的类文件中,但是在运行时忽略它
3. RUNTIME //将注释保留在编译后的类文件中,并在第一次加载类时读取它
在新Package中java.lang.annotation 中包含了以下meta-annotation:
@SuppressWarnings阻止编译器的警告,例:当类型不安全时 ÒJava定义了几个标准的meta-annotation(可以用来解释annotation的annotation)
Ò
@Retention
1.SOURCE //按照规定使用注释,但是并不将它保留到编译后的类文件中
2. CLASS //将注释保留在编译后的类文件中,但是在运行时忽略它
3. RUNTIME //将注释保留在编译后的类文件中,并在第一次加载类时读取它
@Target 1. annotation的target是一个被标注的程序元素。target说明了annotation所修饰的对象范围:annotation可被用于packages、types(类、接口、枚举、annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在annotation类型的声明中使用了target可更加明晰其修饰的目标
Ò
Ò
Documented 表示注释应该出现在类的 Javadoc 中
Ò@Inherited
Ò一个Annotation将被继承
}
@Documented Òpackage com.yd.annotation;
Òimport java.lang.annotation.*;
Ò@Retention(RetentionPolicy.RUNTIME)
Ò@Target(ElementType.METHOD)
Òpublic @interface RedLightAnnotation {
Ò
/*应用该注解的类*/
在执行TestRedLightAnnotation 中间的方法的时候,我们可以读取到方法对应的注解信息,并且根据注解的内容来做一定的处理
Òpackage com.yd.classes;
Òimport com.yd.annotation.*;
Òpublic class TestRedLightAnnotation {
Ò @RedLightAnnotation
Ò public void donet(){
Ò System.out.println(“我们学习.net");
Ò }
Ò public void javaee(){
Ò System.out.println("我们学习j2ee");
Ò }
Ò}
- java新特性(反射和注记)(续)
- java新特性(反射和注记)
- JAVA新特性(反射)
- java/反射/JDK新特性
- Java基础知识-反射-新特性
- JAVA 之JDK1.5新特性和反射机制!
- Java基础-反射学习和JDK新特性
- Java基础加强一、二(Java5新特性和反射 补充)
- 黑马程序员----------Java新特性反射 泛型
- Java之反射及1.5新特性
- [Java5新特性]反射
- 黑马程序员 Java高新技术-jdk1.5新特性和反射基础
- Java Struts 特性和新特性总结
- 反射和特性(1.反射基本信息)
- java--------学习之《JDK1.5新特性,枚举,反射机制》
- 黑马程序员——java反射与新特性
- Java-day8反射 设计模式 JDK新特性
- java 基础加强(myeclipse,debug,junit,JDK5新特性,反射)
- epoll精髓
- 快速傅里叶变换(FFT)(ZZ)
- VB句柄概念-不懂以后深入理解
- 使用mmap()和使用 read()write()实现文件拷贝的对比
- extern用法详解
- java新特性(反射和注记)(续)
- FP编程实践:在C++0x中模拟F#的List.map和List.choose库函数
- 网址收录
- 最热门的IT论坛集合
- VS 2010 正式版 下载
- 【转载】ExtJs grid 回调函数里Function()参数里的具体意义及如何带参数掉函数
- 华清远见高级讲师蒙洋接受至顶网专访:Windows CE 6.0 R3让用户界面更炫
- VB 常用 快捷键 热键 程序员
- VB实例 —万年历 (1)