脚本宝典收集整理的这篇文章主要介绍了java中的注解(Annotation),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
简介
注解,java中提供了一种原程序中的元素关联任何信息、任何元素的途径的途径和方法。
注解是那些插入到源代码中使用其他工具可以对其进行处理的标签。注解不会改变程序的编译方式。java编译器会对包含注解与不包含注解的代码生成相同的虚拟机指令。在java中,注解是被当做修饰符(如public/static之类)来使用的。
注解与注释
注释是供人看的,注解是供程序调用的。一种是程序员写给另一个程序员的,一种是程序员写给计算机解析的。
常用注解
@Override : 修饰重载父类方法;
@Deprecated : 修饰未来将被抛弃的类/方法/属性等等;
注解运行机制分类
注解来源分类
元注解
给注解进行注解,用于自定义注解。
-
@Target: 指明定义的注解的作用域,其值包括:
-
@Retention: 自定义注解的生命周期,其值包括:
Retentionpolicy.SOURCE: 只在源码显示,编译时丢弃;
RetentionPolicy.CLASS: 编译时记录到.class中,运行时忽略;
RetentionPolicy.RUNTIME: 运行时存在,可通过反射来读取。
@Inherited: 一个标记注解,阐述了某个被标注的类型是被继承的,只能继承与类。
@Documented: 用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。Documented是一个标记注解,没有成员。
自定义注解
//@Target(ElementType.METHOD) @Target({ElementType.METHOD,ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public @interface Description { String desc() default ""; String author() default ""; int age() default 18; }
使用关键字@interface定义注解;
成员变量以无参无异常的方式声明;
可以通过default关键字给成员变量指定默认值;
如果注解只有一个成员变量,则成员名称必须取名value(),在使用中可以忽略成员名称与赋值号(=);
注解可以没有成员,没有成员的注解称为标示注解。
使用注解
// @<注解名称>(<成员名1>=<成员值1>,<成员名2>=<成员值2> ...) @Description(desc = "I'm class annotation") public class AnnotationApp { @Description(desc = "I'm method annotation",author = "rudy") public String eyeColor(){ return "red"; } }
解析注解
通过反射获取类、方法、成员上的运行时
注解信息,从而实现动态控制程序运行的逻辑。
import Annotation.Description; import org.junit.Test; public class AnnotationTest { @Test public void testParse() throws ClassNotFoundException { // 取出注解 Class cls = Class.forName("Annotation.AnnotationApp"); boolean isExit = cls.isAnnotationPresent(Description.class); if(isExit){ // 做逻辑处理 Description annotation = (Description) cls.getAnnotation(Description.class); System.out.println("get annotation:" + annotation.desc()); }else{ System.out.println("no annotation!"); } } }
使用类加载器加载类,获取类对象;
判断是否存在类注解;
取出类注解,做逻辑处理;
方法注解类似。
他山之石
深入理解Java:注解(Annotation)--注解处理器: http://blog.csdn.net/z69183787/article/details/40378309
全面解析Java注解(视频):http://www.imooc.com/learn/456
以上是脚本宝典为你收集整理的java中的注解(Annotation)全部内容,希望文章能够帮你解决java中的注解(Annotation)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。