- 浏览: 81635 次
- 性别:
- 来自: 广州
文章分类
最新评论
http://blog.csdn.net/a243932069/article/details/8985076
Java中的注解机制 注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据)。 注解的语法比较简单,除了@符号的使用以外,它基本上与java的固有语法一致,java内置了三种 注解,定义在java.lang包中。 @Override 表示当前方法是覆盖父类的方法。 @Deprecated 表示当前元素是不赞成使用的。 @SuppressWarnings 表示关闭一些不当的编译器警告信息。 下面是一个定义注解的实例 Java代码 package Test_annotation; import java.lang.annotation.Documented; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.Target; import java.lang.annotation.ElementType; import java.lang.annotation.RetentionPolicy; /* * 元注解@Target,@Retention,@Documented,@Inherited * * @Target 表示该注解用于什么地方,可能的 ElemenetType 参数包括: * ElemenetType.CONSTRUCTOR 构造器声明 * ElemenetType.FIELD 域声明(包括 enum 实例) * ElemenetType.LOCAL_VARIABLE 局部变量声明 * ElemenetType.METHOD 方法声明 * ElemenetType.PACKAGE 包声明 * ElemenetType.PARAMETER 参数声明 * ElemenetType.TYPE 类,接口(包括注解类型)或enum声明 * * @Retention 表示在什么级别保存该注解信息。可选的 RetentionPolicy 参数包括: * RetentionPolicy.SOURCE 注解将被编译器丢弃 * RetentionPolicy.CLASS 注解在class文件中可用,但会被VM丢弃 * RetentionPolicy.RUNTIME VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。 * * @Documented 将此注解包含在 javadoc 中 * * @Inherited 允许子类继承父类中的注解 * */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited /* * 定义注解 Test * 注解中含有两个元素 id 和 description * description 元素 有默认值 "no description" */ public @interface Test { public int id(); public String description() default "no description"; } package Test_annotation; import java.lang.annotation.Documented; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.Target; import java.lang.annotation.ElementType; import java.lang.annotation.RetentionPolicy; /* * 元注解@Target,@Retention,@Documented,@Inherited * * @Target 表示该注解用于什么地方,可能的 ElemenetType 参数包括: * ElemenetType.CONSTRUCTOR 构造器声明 * ElemenetType.FIELD 域声明(包括 enum 实例) * ElemenetType.LOCAL_VARIABLE 局部变量声明 * ElemenetType.METHOD 方法声明 * ElemenetType.PACKAGE 包声明 * ElemenetType.PARAMETER 参数声明 * ElemenetType.TYPE 类,接口(包括注解类型)或enum声明 * * @Retention 表示在什么级别保存该注解信息。可选的 RetentionPolicy 参数包括: * RetentionPolicy.SOURCE 注解将被编译器丢弃 * RetentionPolicy.CLASS 注解在class文件中可用,但会被VM丢弃 * RetentionPolicy.RUNTIME VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。 * * @Documented 将此注解包含在 javadoc 中 * * @Inherited 允许子类继承父类中的注解 * */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited /* * 定义注解 Test * 注解中含有两个元素 id 和 description * description 元素 有默认值 "no description" */ public @interface Test { public int id(); public String description() default "no description"; } 下面是一个使用注解 和 解析注解的实例 Java代码 package Test_annotation; import java.lang.reflect.Method; public class Test_1 { /* * 被注解的三个方法 */ @Test(id = 1, description = "hello method_1") public void method_1() { } @Test(id = 2) public void method_2() { } @Test(id = 3, description = "last method") public void method_3() { } /* * 解析注解,将Test_1类 所有被注解方法 的信息打印出来 */ public static void main(String[] args) { Method[] methods = Test_1.class.getDeclaredMethods(); for (Method method : methods) { /* * 判断方法中是否有指定注解类型的注解 */ boolean hasAnnotation = method.isAnnotationPresent(Test.class); if (hasAnnotation) { /* * 根据注解类型返回方法的指定类型注解 */ Test annotation = method.getAnnotation(Test.class); System.out.println("Test( method = " + method.getName() + " , id = " + annotation.id() + " , description = " + annotation.description() + " )"); } } } } package Test_annotation; import java.lang.reflect.Method; public class Test_1 { /* * 被注解的三个方法 */ @Test(id = 1, description = "hello method_1") public void method_1() { } @Test(id = 2) public void method_2() { } @Test(id = 3, description = "last method") public void method_3() { } /* * 解析注解,将Test_1类 所有被注解方法 的信息打印出来 */ public static void main(String[] args) { Method[] methods = Test_1.class.getDeclaredMethods(); for (Method method : methods) { /* * 判断方法中是否有指定注解类型的注解 */ boolean hasAnnotation = method.isAnnotationPresent(Test.class); if (hasAnnotation) { /* * 根据注解类型返回方法的指定类型注解 */ Test annotation = method.getAnnotation(Test.class); System.out.println("Test( method = " + method.getName() + " , id = " + annotation.id() + " , description = " + annotation.description() + " )"); } } } } 输出结果如下: Test( method = method_1 , id = 1 , description = hello method_1 ) Test( method = method_2 , id = 2 , description = no description ) Test( method = method_3 , id = 3 , description = last method )
发表评论
-
记录一下我的p2p的UDP打洞过程【云服务器公网版本】
2014-07-19 21:14 2098服务端连接了成功处理了两个客户端的登录并且成功打洞后的log记 ... -
记录一下我的p2p的UDP打洞过程【localhost局域网版本】
2014-07-19 21:08 2002MainServer在两个客户端都启动成功之后并且打洞成功之后 ... -
有hadoop_zookeeper的pom.xml
2014-06-03 23:39 829FROM:http://blog.csdn.net/zph2 ... -
省市县三级联动数据库
2014-06-03 09:42 3160/* *@名称: myaddress.js ... -
记录一下这次mvn 淘宝的开源MVC框架 Webx的过程
2014-05-24 21:44 811[INFO] ------------------ ... -
恶心的Enum类型
2014-05-24 09:59 662public enum InvoiceType { ... -
分页标签<w:pager>
2014-05-09 17:05 9721.WEB-INF/tlds/pager.tld < ... -
自定义标签taglib
2014-05-09 17:00 709JSP 最佳实践: taglib简介 ... -
MyEclipse has detected that less than 5% of the 31MB of Eden Space (Heap memory)
2014-04-27 12:48 1035解决办法: D:\>cd D:\Users\Admin ... -
数据库映射只@OneToMany的两个区别
2014-03-31 21:07 769========================== (不加 ... -
接着报错,连接问题Cannot open a connection
2014-03-28 18:39 1358HTTP Status 500 - ------- ... -
让spring启动时应用不需要加载数据库【default-lazy-init="true"】
2014-03-28 14:33 5318spring启动时应用不需要加载数据库,需要时在加载,如何实现 ... -
异常的Tomcat输出信息-修正log4j配置文件之后仍然异常
2014-03-28 11:51 10322014-3-28 11:46:50 org.apache ... -
异常的Tomcat输出信息
2014-03-28 11:27 655正常情况下是没有换行的。现在异常的情况是有换行的。 20 ... -
正常的Tomcat输出信息
2014-03-28 11:26 9542014-3-28 11:23:07 org.apache ... -
烦人的后台首页index.jsp弄好了
2014-03-25 14:39 45621.<title>微信公众平台后台管理< ... -
MAVEN官网地址
2014-03-25 10:12 673http://mvnrepository.com/artifa ... -
正则表达式
2014-03-25 10:11 512[正则表达式]文本框输入内容控制 整数或者小数:^[0-9]+ ... -
Window 通过cmd查看端口占用、相应进程、杀死进程等的命令
2014-03-24 16:03 1024Window 通过cmd查看端口占用、相应进程、杀死进程等的命 ... -
java synchronized详解
2014-03-16 11:30 431Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候 ...
相关推荐
Java 基础(5_8) - 注解机制详解
该案例实现jdk1.5新特性:java注解和java反射机制加上jdbc API综合运用的一个案例,实现了数据库的简易封装,对想了解jdk的反射机制,注解有帮助
Java学习资料—反射机制和注解;Java学习资料—反射机制和注解;Java学习资料—反射机制和注解Java学习资料—反射机制和注解;Java学习资料—反射机制和注解;Java学习资料—反射机制和注解;
1.注解详细内容(五个内置注解、自定义注解、元注解、利用反射机制读取注解信息) 2.java动态性(静态语言、动态语言、反射机制操作(类、属性、注解、构造器)、动态编译、脚本引擎Rhino动态执行JavaScript代码、...
Java注解机制的应用研究
Java中关于注解和反射机制的内容
利用java注解机制,实现自定义注解实例,例子中实现了简单的注解赋值和获取并打印值。
NULL 博文链接:https://ygsilence.iteye.com/blog/1409257
主要为大家详细介绍了Java注解机制之Spring自动装配实现原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
java 注解 反射 字节码 类加载 包括pdf资料以及全部源码文件,具有非常大参考价值和学习意义
一种基于Java注解和反射机制的Excel文件读写操作方法.pdf
主要介绍了java中注解机制及其原理的详解的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
java或Java框架中常用的注解及其作用详解:Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过...
Java注解是一种用于提供元数据的特殊注释形式,可以应用于类、方法、字段和其他程序元素。这些元数据描述了程序结构、行为或属性的信息。Java注解以@符号开始,并包含注解名称和相关属性。Java提供了许多内置注解,...
Java核心知识体系2:注解机制详解
java8流源码ls-注解 ls-annotation 是一个 java 字节码反编译器; 它提取并打印使用 java 注释的类、方法和字段的定义。 这个工具的目的是让带有相互依赖的注解的声明变得有意义,这种依赖的一个例子是 Spring Boot ...
它们都不会直接影响到程序的语义,只是作为注解(标识)存在,我们可以通过反射机制编程实现对这些元数据(用来描述数据的数据)的访问。另外,你可以在编译时选择代码里的注解是否只存在于源代码级,或者它也能在...
本课程详细介绍了Java中的注解机制,包括注解的定义和分类,注解的使用和自定义,注解的源码和架构分析; 本课程语言简单凝练,视频短小精悍,让你一次彻底搞懂Java注解!
Java中的克隆(Clone)机制,很少涉及的内容。
本Java视频教程适合有一定编程语言基础的学员观看,在本Java视频教程中讲解了Java面向对象、异常、数组、常用类、集合、IO流、线程、反射机制。该视频教程基于Java13进行讲解,Java13是目前Java最新版本。视频中讲师...