来!认识一下强大的Annotation
来源:互联网 发布:搜片大师源码 编辑:程序博客网 时间:2024/06/05 15:19
1.annotation是什么?
1.注释:存在与否都不会影响程序的运行,当然这个是指不涉及APT(Annotation Processing Tool)的情况下2.标记:可以标记类、方法、成员变量(java 8开始可以标记类型)3.补充信息:可以具体描述被标记内容的相关信息,提供验证、部署、额外的功能。4.一个简单又复杂的强大技术。
2.我们身边的Annotation
1.@Override:可以认为是一种验证,验证所标记的方法是否是父类的需要重写的方法,主要防止低级错误(例如拼写错误),它告诉编译器来验证这个方法,保证你所重写的方法是父类存在的方法。(有些人认为这是一种限定或者是控制)2.@Deprecated:标记这个方法已经过时。 例如:我们自己定义一个过时的方法,或者创建一个Date对象 然后调用getYear()方法3.Spring、Hibernate、各种MVC框架,现在都基本提供Annotation的编程方式。优点:简单(降低配置难度),提高开发效率(不用来回切换于代码与配置文件之间)缺点:在没有源码的情况下 今后维护起来比较费劲,修改代码之后大部分情况下不得不重启服务。
3.写一个简单的annotation 感官认识一下,详细介绍请关注我博客的后期文章
1.我们自己定义了一个CxyAnnotation2.我们创建了一个成员变量name,然后标记上CxyAnnotation3.我们使用反射将其信息取出来。(当然实际使用的时候会使用APT去处理,这里只做一个简单的例子)
4.因为Annotation的使用和反射息息相关,所以本例只是简单的介绍了一下annotation,如果本文受大家欢迎的话,会尽快出更详细的文章。
Java代码
package com.cxy.annotation; import java.lang.annotation.Annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.util.Date; /** * @author cxy */ public class AnnotationTest { @CxyAnnotation(title="名字",descript="记录用户姓名") public String name=""; public static void main(String[] args) throws Exception { Date d=new Date(); d.getYear(); //这个Date方法被划伤了横线 代买这个方法已经过时 oldMethod(); //这个自定义的方法 被打上了过时方法的标记 @Deprecated System.out.println("===================="); Annotation[] aArray=AnnotationTest.class.getField("name").getAnnotations(); //为了演示方便这里我知道肯定会有一个CxyAnnotation在数组的第一个 所以直接取,实际工作中请使用遍历去判断 Annotation na=aArray[0]; System.out.println("成员变量name的扩展信息:"); System.out.println("name代表:"+((CxyAnnotation)na).title()); System.out.println("name具体描述:"+((CxyAnnotation)na).descript()); } //检查父类是否有一个这样的方法让子类重写。 @Override public String toString() { return "AnnotationTest [getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString() + "]"; } //标记这个方法已经过时 @Deprecated public static void oldMethod() { System.out.println("这个方法已经过时了"); } } //自己定义的一个Annotation @Retention(RetentionPolicy.RUNTIME) //保留注释到程序运行 @Target(ElementType.FIELD) //这个annotation是标记在field上的 @interface CxyAnnotation { String title(); String descript(); }
转载自:http://snkcxy.iteye.com/blog/1820951
0 0
- 来!认识一下强大的Annotation
- 来认识一下Ning!
- 半夜来认识一下S5PV210 的VBPDE和VFPDE
- 来认识一下国内可穿戴设备市场的玩家
- 快来认识一下我的家乡方言吧!
- 认识一下
- 认识一下
- 比较深入的认识一下textrange
- 认识一下java的开发环境
- 强大的战斗力从哪里来!
- 想认识一下做电子仿真的朋友
- 认识一下全球顶尖的五大黑客
- 全面认识一下.NET 4的缓存功能
- 认识一下Kotlin语言,Android平台的Swift
- 认识一下Kotlin语言,Android平台的Swift
- 用寂寞的时光,来强大自己的内心
- 一个非常强大的方法来校验图片的真实性
- 使用强大的 Mockito 来测试你的代码
- Apache Comons+Google Guava
- 基于hadoop生态圈的数据仓库实践 —— 进阶技术(十六)
- java ee乱码的问题的解决方案
- Git实用小技巧:git status 中文文件名编码问题解决
- ajax中data参数格式
- 来!认识一下强大的Annotation
- mariadb(MySql)设置远程访问权限
- css设置透明度 (兼容所有浏览器)
- ListView底部添加加载更多按钮实现数据分页
- Android5.0免Root截屏,录屏
- OC-字典
- 【leetcode】231. Power of Two
- AbstractQueuedSynchronizer
- 设计模式之 模板模式(做练习题实例)