本文讲述了Java注解教程——Java注解使用及原理解析!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:
Java注解实际上只是对包、类、方法、成员变量等java程序进行标注。Java注解自身没有业务逻辑,如要实现注解相应的业务逻辑功能必须要由另外的处理类来实现。其基本原理就是通过java反射机制,获取这些java程序的包、类、方法、成员变量的注解,然后加以判断并实现相应的业务功能逻辑。
1.注解出现的背景
以前XML是各大框架的青睐者,它以松耦合的方式完成了框架中几乎所有的配置,但是随着项目越来越庞大,XML的内容也越来越复杂,维护成本变高。
于是就有人提出来一种标记式高耦合的配置方式,即注解。方法、类、字段属性上都可以注解,反正几乎需要配置的地方都可以进行注解。
注解可以提供更大的便捷性,易于维护修改,但耦合度高,而 XML 相对于注解则是相反的。追求低耦合就要抛弃高效率,追求高效率必然会遇到耦合。
2.Java注解应用
在看注解的用途之前,有必要简单的介绍下XML和注解区别,注解:是一种分散式的元数据,与源代码紧绑定;xml:是一种集中式的元数据,与源代码无绑定。
注解的应用包括:一、生成文档,通过代码里标识的元数据生成javadoc文档。二、编译检查,通过代码里标识的元数据让编译器在编译期间进行检查验证。三、编译时动态处理,编译时通过代码里标识的元数据动态处理,例如动态生成代码。四、运行时动态处理,运行时通过代码里标识的元数据动态处理,例如使用反射注入实例。
3.Java注解分类
Java注解的分类包括:
一、Java自带的标准注解,包括@Override、@Deprecated、@SuppressWarnings等,使用这些注解后编译器就会进行检查。
二、Java元注解,元注解是用于定义注解的注解,包括@Retention、@Target、@Inherited、@Documented、@Repeatable 等。元注解也是Java自带的标准注解,只不过用于修饰注解,比较特殊。
三、自定义注解,自定义注解用户可以根据自己的需求定义注解。
3.1Java自带的标准注解
JDK 自带的以下标准注解:
@Override:对覆盖超类中的方法进行标注,如果被标注的方法并没有实际覆盖超类中的方法,编译器会发错错误警告。
@Deprecated:对不鼓励使用或已过时的方法进行标注,当开发人员对这些被标注的方法进行调用时,会显示该方法已过时的提示信息。
@SuppressWarnings:选择性的取消特定代码段中的警告。
@FunctionalInterface :用于指示被修饰的接口是函数式接口,在 JDK8 引入。
@SuppressWarnings 注解的常见参数值的简单说明:
@SuppressWarnings("unchecked")//执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型。
@SuppressWarnings("unused") //未使用的变量。
@SuppressWarnings("resource") //有泛型未指定类型。
@SuppressWarnings("path") //在类路径、源文件路径等中有不存在的路径时的警告。
@SuppressWarnings("deprecation") //使用了不赞成使用的类或方法时的警告。
@SuppressWarnings("fallthrough") //当 Switch 程序块直接通往下一种情况而没有 break; 时的警告。
@SuppressWarnings("serial")//某类实现Serializable(序列化), 但没有定义 serialVersionUID 时的警告。
@SuppressWarnings("rawtypes") //没有传递带有泛型的参数。
@SuppressWarnings("finally") //任何 finally 子句不能正常完成时的警告。
@SuppressWarnings("try") // 没有catch时的警告。
@SuppressWarnings("all") //所有类型的警告。
3.2Java元注解
元注解是java API提供的,是用于修饰注解的注解,通常用在注解的定义上:
@Retention:用来声明注解的保留策略。
@Targe:标注所修饰的对象范围。
@Inherited:表示注解可以被继承。
@Documented:表示注解应该被JavaDoc工具记录。
@Repeatable:JDK 8 新增的注解,允许一个注解在同一声明类型(类、属性或方法)中多次使用。
更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。
想高效系统的学习Java编程语言,推荐大家关注一个微信公众号:Java圈子。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Java入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!