这里主要从5个方面来说明注解
- 什么是注解
- 注解有什么用
- 怎么使用注解
- 怎么自定义注解
- 注解使用实例
在未开始学习任何注解具体语法而言,你可以把注解看成一张标签。这有助于你快速地理解它的大致作用。
2、注解有什么用?
注解有什么用呢!其实就相当于在一个对象上(这里可能不太准确)加上了一定的附加功能,标识或者是添加附加的功能。其实当你使用注解后,就发现,以前需要就行各种配置文件的功能都可以通过注解来实现,大大的简化了代码工作量;
3、那怎么使用注解呢?
注解可分为以下几种类型
按运行机制分
- 源码注解 只在源码中存在
- 编译时注解 在class中依然存在,如@Deprecated
- 运行时注解 运行阶段起作用,如@Autowired
按来源分
- JDK自带注解
- 三方注解 最常见
- 自定义注解
元注解
注解的注解
- 按作业划分:生成文档。这是最常见的,也是java 最早提供的注解。常用的有@see @param @return 等
- 跟踪代码依赖性,实现替代配置文件功能。比较常见的是spring 2.5 开始的基于注解配置。作用就是减少配置。现在的框架基本都使用了这种配置来减少配置文件的数量。
- 在编译时进行格式检查。如@Override 放在方法前,如果你这个方法并不是覆盖了超类方法,则编译时就能检查出。
注解的使用
比如java 自带的一些注解
@Override
只能用于方法(不能用于类,包声明或者其他构造)
作用:可以保证编译时候Override函数的声明正确性
用法:@Override public void fun(){..}
@Deprecated
同样只能作用与方法
作用:对不应再使用的方法进行注解
用法:@Deprecated public void fun{...}
@SupressWarnings
可以注解一段代码作用:关闭特定的警告信息,例如你在使用泛型的时候未指定类型
用法: @SupressWarnings(value={"unchecked"})
Java中还提供了四种元注解,专门负责注解其他的注解
@Target 表示该注解可以用于什么地方。可用的ElementType参数包括:
CONSTRUCTOR : 构造器的声明
FIELD : 域声明(包括enum实例)
LOCAL_VARIABLE : 局部变量声明
METHOD : 方法声明
PACKAGE : 包声明
PARAMETER : 参数声明
TYPE : 类、接口(包括注解类型)或enum声明
@Retention 表示需要在什么级别保存该注解信息。可选的RetentionPoicy参数包括:
SOURCE : 注释将被编译器丢掉
CLASS : 注释在class文件中可用,但会被VM丢弃
RUNTIME : VM将在运行时也保留注解,因此可以通过反射机制读取注解的信息。
@Documented 将注解包含在JavaDoc文档中,这样javadoc 命令生成的文档包括该注解
@Inheried 允许子类继承父类中的注解。
4、怎么自定义注解
其实自定义注解很简单,如下所示
/** * 资源相关操作注解 * * @author linqh * */ @Target({ ElementType.TYPE }) //定义该注解可以使用在接口和类上 @Retention(RetentionPolicy.RUNTIME) //定义了该注解在jvm运行时保留 @Documented //定义该注解写入文档 public @interface Operation { // @interface 关键字定义 这是一个注解// String entity() default ""; String name(); OperationEnum[] operations(); } |
5、注解使用实例
最后通过项目中的一个注解实例来结束这篇文章。
本实例创建的注解主要用于控制权限操作,注解后的类只能具有相应的操作。不能超过注解的操作范围
- 创建一个注解类,如上图
- 在某个实体类上使用该注解,这样emp类,具有规定的这些操作。
- 前端权限配置,这里显示上面规定的操作。
- 配置后登陆不同的用户,显示能操作的功能不同