java注解

简介:
  1. 注解是一种标记,我们可以对拥有这种标记的元素进行处理

  2. Annotation接口

    wKiom1Sbjbrwl_k7AAEACQZbFbM775.jpg

    所有注解类型都要继承的一个公共接口。手动继承这个接口并不会定义一个注解类型。这个接口本身并不是用来定义注解类型的。

    当我们使用@interface自定义注解时,隐含的继承了这个接口。

  3. java类型

    java有四种类型:类(class)、接口(interface)、注解(@interface)、枚举(enum)

4.  元注解

    注解的注解称为元注解。元注解有四种。

wKiom1Sbj8yzPiGiAAIBhVrDrW0782.jpg

Target指定注解用在什么地方

Retention指定注解被保留多久

Inherited指定注解是否可以被继承

Documented指定注解是否被包含到javadoc中


Target有一个ElementType类型的数组value

wKioL1SbkkTQQM2gAACbYvegIEg417.jpg

    ElementType中定义的常量

    wKiom1SbkfiyEoRRAAITVxfCVGM276.jpg


    TYPE表示注解只能加在类、接口(包括注解)、枚举上

    METHOD表示注解只能加在方法上

    。。。

    

    Retention有一个RetentionPolicy类型的元素value。

    下面是RetentionPolicy中定义的枚举常量

wKioL1SblDPg17jXAAG-FGkAKfw085.jpg

默认的RetentionPolicy是CLASS。


5. 自定义注解

    wKioL1Sbl6Hxv_2yAADy2GE7gaU942.jpg

    

    wKioL1Sb9j-AKhINAAA_9j05CNE507.jpg


    wKioL1Sb9x6Q2Jb0AADVxM-hXuA778.jpg

    输出结果为null。因为,此时Hello注解RetentionPolicy为CLASS,表示编译时有效,运行时无效。也就是相当于在运行时没有Hello注解。如果我们将其改为RUNTIME,则输出结果如下:

    wKioL1Sb-B7xlfEjAABB8qbkqJA278.jpg

    我们可以利用java反编译工具(Java Decompiler)查看一下Animal.class文件

    wKiom1Sb-MqDdLsBAABHicvKxVM542.jpg

    

    假设,我们已经将RetentionPolicy改为RUNTIME

    那么,下面的代码将输出结果

    wKioL1Sb-pPDocErAAA7JRtrZJ4097.jpg

    

    wKioL1Sb-tmz3TKeAAHJs80jXPM603.jpg


    之所以能输出结果是因为Hello注解被Inherited所修饰,表示注解可被继承。


6.  注解的作用

    注解给被注解的元素添加了额外的辅助信息,提供了一种统一处理的方式。如果没有外部解析工具对其加以解析和处理的话,它是不会对java源代码及class等产生任何影响,也不会影响程序的执行。   

7.  注解是给反射用的



本文转自    手不要乱摸      51CTO博客,原文链接:http://blog.51cto.com/5880861/1595797


相关文章
|
10天前
|
Java API 数据库
Java一分钟之-JPA注解:@Entity, @Table, @Id等
【6月更文挑战第14天】Java Persistence API (JPA) 是Java开发中的ORM框架,通过注解简化数据访问层。本文介绍了三个核心注解:`@Entity`标识实体类,`@Table`自定义表名,`@Id`定义主键。易错点包括忘记添加`@Entity`、未正确设置主键。建议使用`@GeneratedValue`和`@Column`细化主键策略和字段映射。正确理解和应用这些注解能提高开发效率和代码质量。
25 3
|
11天前
|
Java 编译器 测试技术
Java基础16-Java注解简介和最佳实践(二)
Java基础16-Java注解简介和最佳实践(二)
20 4
|
23天前
|
存储 安全 Java
Java语言注解(Annotations)的技术性探索
Java语言注解(Annotations)的技术性探索
|
1月前
|
Java 编译器 程序员
java注解浅述
java注解浅述
26 1
|
11天前
|
安全 Java 开发者
Java基础16-Java注解简介和最佳实践(一)
Java基础16-Java注解简介和最佳实践(一)
24 5
|
23天前
|
Java 编译器 API
Java注解(Annotations)技术性文章
Java注解(Annotations)技术性文章
28 0
|
24天前
|
XML Java 编译器
Java的注解
Java的注解
|
30天前
|
Java 编译器 开发者
Java注解(Annotation)技术深入解析
Java注解(Annotation)技术深入解析
414 1
|
10天前
|
Java 数据库连接 Spring
Java注解
Java注解
11 0
|
1月前
|
ARouter Java
Java注解之编译时注解
Java注解之编译时注解
23 3