我们用过 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的几个枚举值就代表了 注解应该写在的位置
2、 使用了注解的类 或者方法
@MyAnnotation
class A
{
}
3、 利用反射来操作注解 详细见代码
Class类有一个 方法
这个方法接受一个注解的字节码参数 ,然后返回这个类所标识的注解对象 ,因为我们标识了一个注解就相当于产生了一个注解对象 。
这个方法判断一个类是否被注解所标识
下面是代码示例
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
{
}
分享到:
相关推荐
在这份文档中,我们深入探讨了Spring的核心注解,包括但不限于@Component、@Repository、@Service、@Controller和@Autowired。这些注解简化了配置过程,减少了样板代码,并使得组件之间的耦合度降低,更有利于单元...
NULL 博文链接:https://thetopofqingshan.iteye.com/blog/1679435
Spring Boot技术知识点:如何深入理解@Component注解
深入浅出Java注解(注解概述+注解的本质+反射注解信息+元注解+属性的数据类型及特别的属性:value和数组)
主要介绍了深入理解Java注解类型(@Annotation),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
深入分析Java Web技术内幕 这本书资源已经有共享,但是没有标签,自己添加后分享给大家,因为是手动添加难免有些小错,请大家包涵。请配合第一部分一起解压
接着阐述Swing的基础和高级知识、多态、注解、国际化、Java网络、JDBC、Java线程、并发工具、安全、Java Web应用程序、JavaServer Pages、Javadoc,以及应用程序部署等内容,掌握这部分内容有助于提升编程技能。
本资源记录了在Java EE企业级应用开发学习过程中的第十天内容,重点关注了整合Spring、Spring MVC和MyBatis(SSM框架)进行注解开发的学习和应用。通过这一天的学习,您将掌握如何构建强大的Web应用程序,同时提供了...
无论是在JDK还是框架中,注解都是很重要的一部分,我们使用过很多注解,但是你有真正去了解过他的实现原理么?你有去自己写过注解么? 一、相关 注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及...
本书主要讲授Java程序设计语言,系统地介绍Java的主要包(即java.lang.*、java.util和java.io)中的大多数类,并以内容丰富的示例对这些类如何工作进行了深入剖析。作者对这部经典著作进行更新,使其反映了Java 2...
Spring框架的声明式事务管理是Java开发中的核心特性,它为高效且可靠的数据操作提供了强大支持。...深入理解Spring声明式事务的工作原理,不仅能帮助开发者更高效地使用Spring框架,也是提升Java企业级开发能力的关键。
本文针对java初学者或者annotation初次使用者全面地说明了annotation的使用方法、定义方式、分类。初学者可以通过以上的说明制作简单...涉及到深入annotation的内容,作者将在后文《Java Annotation高级应用》中谈到。
Java注解和最佳实践 JavaIO流 多线程 深入理解内部类 javac和javap Java8新特性终极指南 序列化和反序列化 继承、封装、多态的实现原理 容器 Java集合类总结 Java集合详解1:一文读懂ArrayList,Vector与Stack使用...
java注解是java5引入的功能,我们能够经常看到,如@Override,但未必对其有深入的了解。了解这方面的知识有助于我们深入理解一些框架,下面就以模仿AndroidAnnotations中三个注解特性来详细说明。 注解布局文件,@...
接着阐述Swing的基础和高级知识、多态、注解、国际化、Java网络、JDBC、Java线程、并发工具、安全、Java Web应用程序、JavaServer Pages、Javadoc,以及应用程序部署等内容,掌握这部分内容有助于提升编程技能。
主要介绍了深入理解 Java注解及实例的相关资料,希望通过本文大家能够掌握java注解的知识,需要的朋友可以参考下
书中基于全新Java SE 8,完整且准确地阐述Java虚拟机规范,是深度了解Java虚拟机和Java语言实现细节的必读之作。 《Java核心技术系列:Java虚拟机规范(Java SE 8版)》共分7章。第1章从宏观的角度介绍了Java虚拟机...
《Java虚拟机规范(Java SE7版)》由林德霍尔姆著,本书完整而准确地阐释了Java虚拟机各方面...本书还介绍了Java SE 5中对class文件格式的扩展变动,例如泛型和注解等。另外还介绍了Java内存模型的指令操作和初始化规则。
Java注解和最佳实践 JavaIO流 多线程 深入理解内部类 javac和javap Java8新特性终极指南 序列化和反序列化 继承封装多态的实现原理 集合类 Java集合类总结 Java集合详解:一文读懂ArrayList,Vector与Stack使用方法和...
主要为大家详细介绍了Java注解的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下