Java中注解详解

一、什么是注解

官方定义:

注解是一系列元数据,它提供数据用来解释程序代码,但是注解并非是所解释的代码本身的一部分。注解对于代码的运行效果没有直接影响。

注解有许多用处,主要如下:

提供信息给编译器:编译器可以利用注解来探测错误和警告信息。

编译阶段时的处理:软件工具可以用来利用注解信息来生成代码、Html文档或者做其它相应处理。

运行时的处理:某些注解可以在程序运行的时候接受代码的提取

值得注意的是,注解不是代码本身的一部分。

我们通俗一点理解就是:注解就相当于超市里面商品的标签,它不属于商品,它只是为商品做一些解释说明,而注解就是为我们的代码作解释说明,并不属于我们代码本身的部分。

二、注解的使用

JDK中提供的注解*

JDK里面提供的几个注解

@Override: java.lang.Override 是一个标记类型注解,它被用作标注方法。它说明了被标注的方法重载了父类的方法,起到了断言的作用。如果我们使用了这种注解在一个没有覆盖父类方法的方法时,java 编译器将以一个编译错误来警示。

@Deprecated:表示该方法已经过时了。(当方法或是类上面有@Deprecated注解时,说明该方法或是类都已经过期不能再用,但不影响以前项目使用,提醒你新替代待的方法或是类。如果程序员不小心使用了它的元素,那么编译器会发出警告信息。)

@SuppressWarnings:表示忽略指定警告,比如@SuppressWarnings(“Deprecation”)

@SafeVarargs:参数安全类型注解。它的目的是提醒开发者不要用参数做一些不安全的操作,它的存在会阻止编译器产生 unchecked 这样的警告。它是在 Java 1.7 的版本中加入的。

@FunctionalInterface:函数式接口注解,这个是 Java 1.8 版本引入的新特性。

元注解

java.lang.annotation 提供了四种元注解,专门注解其他的注解(在自定义注解的时候,需要使用到元注解)。

1.@Retention:定义该注解的生命周期。

RetentionPolicy.SOURCE:注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。

RetentionPolicy.CLASS:注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。

RetentionPolicy.RUNTIME:注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,所以在程序运行时可以获取到它们。

2.@Target:表示该注解用于什么地方。默认值为任何元素,表示该注解用于什么地方。可用的ElementType 参数包括:

ElementType.CONSTRUCTOR: 用于描述构造器。

ElementType.FIELD: 成员变量、对象、属性(包括enum实例)。

ElementType.LOCAL_VARIABLE: 用于描述局部变量。

ElementType.METHOD: 用于描述方法。

ElementType.PACKAGE: 用于描述包。

ElementType.PARAMETER: 用于描述参数。

ElementType.TYPE: 用于描述类、接口(包括注解类型) 或enum声明。

3.@Documented:一个简单的Annotations 标记注解,表示是否将注解信息添加在java 文档中。

4.@Inherited :表示当前注解可以由子注解来继承。

5.@Repeatable:是可重复的意思,Java 1.8 才加进来的,指的是注解的值可以同时取多个。

自定义注解

Annotation型定义为@interface,所有的Annotation 会自动继承java.lang.Annotation这一接口,并且不能再去继承别的类或是接口。

参数成员只能用public 或默认这两个访问权修饰,可以用default设置默认值。也可以不定义成员。

参数成员只能用基本类型byte、short、char、int、long、float、double、boolean八种基本数据类型和String、Enum、Class、annotations等数据类型,以及这一些类型的数组。

要获取类方法和字段的注解信息,必须通过Java的反射技术来获取 Annotation 对象,因为你除此之外没有别的获取注解对象的方法
在这里插入图片描述

注解经典运用

运行期利用反射可以获取注解:详情请移步吃透Java基础六:反射

注解+反射 在数据库框架方面的应用:

有一张用户表,包含id name age gender 对每一个字段进行检索并打印出Sql语句

1、自定义Table和Column注解
在这里插入图片描述
2、编写User类
在这里插入图片描述
3、利用反射获取注解信息,实现Sql语句查询
在这里插入图片描述

运行输出:
在这里插入图片描述

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值