@深入注解,在Java中设计和使用自己的注解
来源:互联网 发布:java大转盘抽奖算法 编辑:程序博客网 时间:2024/06/03 13:39
我们用过 JDK给我们提供的 @Override @Deprecated @SuppressWarning 注解 ,这些注解是JDK给我们提供的 ,我们只是在用别人写好的东西 ,那么我们是否可以自己写注解呢?当然是可以的 。
我们写的注解包括三个环节
1、 注解的声明 ,也就是注解类的定义 形式如下 @interface 来进行注解的声明
package me.test;
import java.lang.annotation.* ;//导入注解包中所有注解
@Retention(RetentionPolicy.RUNTIME) //解释如下
@Target(ElementType.TYPE)//解释如下
public @interface MyAnnotation
{
}
@Retention(RetentionPolicy.RUNTIME)
指定了注解保留的周期 注解的生命周期有是三个 RetentionPolicy 枚举的三个值代表了三个声明周期 默认是CLASS
CLASS
编译器将把注释记录在类文件中,但在运行时 VM 不需要保留注释。
RUNTIME
编译器将把注释记录在类文件中,在运行时 VM 将保留注释,因此可以反射性地读取。
SOURCE
编译器要丢弃的注释。
@Target(ElementType.TYPE)
这个标识注解应该标在那里 ElementType的几个枚举值就代表了 注解应该写在的位置
CONSTRUCTOR
构造方法声明
FIELD
字段声明(包括枚举常量)
LOCAL_VARIABLE
局部变量声明
METHOD
方法声明
PACKAGE
包声明
PARAMETER
参数声明
TYPE
类、接口(包括注释类型)或枚举声明
2、 使用了注解的类 或者方法
@MyAnnotation
class A
{
}
3、 利用反射来操作注解 详细见代码
Class类有一个 方法
<A extends Annotation>
A
getAnnotation(Class<A> annotationClass)
这个方法接受一个注解的字节码参数 ,然后返回这个类所标识的注解对象 ,因为我们标识了一个注解就相当于产生了一个注解对象 。
boolean
isAnnotationPresent(Class<? extendsAnnotation> annotationClass)
这个方法判断一个类是否被注解所标识
下面是代码示例
MyAnnotationTest.java中
package me.test;
import java.lang.annotation.Annotation;
@MyAnnotation
public class MyAnnotationTest
{
public static void main(String []args)
{
if(MyAnnotationTest.class.isAnnotationPresent( MyAnnotation.class))
{
MyAnnotation an=(MyAnnotation)MyAnnotationTest.class.getAnnotation(MyAnnotation.class) ;
System.out.println(an.toString());
}
}
}
MyAnnotation.java中
package me.test;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotation
{
}
- @深入注解,在Java中设计和使用自己的注解
- 在Java中设计和使用自己的注解
- 在Java中设计和使用自己的注解(转载)
- Java注解的学习---深入理解Java注解、自己写一个Java注解
- 自己创建注解,和使用注解
- java 中注解的使用
- java中注解的使用
- 游戏服务端中使用Servlet和Java注解的一个好设计
- Java注解在Android中使用
- myBatis在java中使用注解实现
- Java中使用注解
- java中注解的定义和注解的获取
- Annotation & Enum :Java中注解和枚举的使用
- 关于Java中反射和注解的使用
- java中 @Test注解的使用和其他成员
- Java Annotation 注解的介绍和使用 自定义注解
- java注解之注解的使用和定义
- 深入理解JAVA的注解
- 深入浅出MFC 。。。
- 标准C++的一些约定
- 如何才能成功
- Linux网络编程必看书籍推荐
- Linux内核学习四库全书
- @深入注解,在Java中设计和使用自己的注解
- C++ 50条原则
- 代理(重複)機能性(コンピュータ処理上の安全機能)
- Java类的基本运行顺序
- VirtualBox安装64位Live版的Fedora16并启用GNOME
- ThinkPHP的URL路由
- ThinkPHP控制器URL模式
- windows7_QtCreator2.4.1_Qt4.8.0_Qwt6.0.1_msvc2010 编译环境搭建的总结
- poi导出到excel方法封装