注解笔记

注解的作用

jdk1.5提供的新技术
我们在编程中经常会使用到Annotation作用有:
1)编译检查,比如@SuppressWarnings,@Deprecated和@Override都具有编译检查作用
2)替代配置文件:使用反射来读取注解信息
注解其实就是代码里的特殊标记,它用于替代配置文件:传统方式通过配置文件告诉类如何运用,有了注解技术后,开发人员可以通过注解告诉类如何运用。在Java技术里注解的典型应用是:可以通过反射技术得到类里面的注解,以确定怎么去运行类。注解可以标记在包、类、属性、方法、方法参数以及局部变量上,且同一个地方中可以同时标注多个注解。
目前大部分框架(如spring)都使用了 注解简化代码并提高编码的效率( 使用注解之前使用的是xml进行配置)
注解可以在编译(source),类加载(class),运行时(runtime)被读取,并执行相应的处理,以便于其他工具补充信息或者进行部署

内置注解有哪些,作用是什么

@Override—检查该方法是否是重载方法。如果发现其他类,或者是引用的接口中并没有该方法时,会报编译错误。
@Deprecated—标记过时方法。如果使用该方法,会报编译警告。
@SuppressWarnings—指示编译器去忽略注解中声明的警告。
在这里插入图片描述
从 Java 7 开始,额外添加了 3 个注解:
@SafeVarargs - Java 7 开始支持,忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告。
@FunctionalInterface - Java 8 开始支持,标识一个匿名函数或函数式接口。
@Repeatable - Java 8 开始支持,标识某注解可以在同一个声明上使用多次。

什么是元注解,有哪些?含义是什么

元注解是指注解的注解,在JDK 1.5中提供了4个标准的用来对注解类型进行注解的注解类。可以使用这4个元注解来对我们自定义的注解类型进行注解
1.@Retention用来约束注解的生命周期,分别有三个值,源码级别(source),类文件级别(class)或者运行时级别(runtime),若没有 @Retention,则默认是 RetentionPolicy.CLASS。其含有如下:
SOURCE:注解将被编译器丢弃(该类型的注解信息只会保留在源码里,源码经过编译后,注解信息会被丢弃,不会保留在编译好的class文件里)
CLASS:注解在class文件中可用,但会被VM丢弃(该类型的注解信息会保留在源码里和class文件里,在执行的时候,不会加载到虚拟机中)。
RUNTIME:注解信息将在运行期(JVM)也保留,因此可以通过反射机制读取注解的信息(源码、class文件和执行的时候都有注解的信息),如SpringMvc中的@Controller、@Autowired、@RequestMapping等。
2.@Target -用来约束注解可以应用的地方(如方法、类或字段),其中ElementType是枚举类型。若没有 @Target,则该 Annotation 可以用于任何地方。
public enum ElementType {
/标明该注解可以用于类、接口(包括注解类型)或enum声明/
TYPE,
/
* 标明该注解可以用于字段(域)声明,包括enum实例 /
FIELD,
/
* 标明该注解可以用于方法声明 /
METHOD,
/
* 标明该注解可以用于参数声明 /
PARAMETER,
/
* 标明注解可以用于构造函数声明 /
CONSTRUCTOR,
/
* 标明注解可以用于局部变量声明 /
LOCAL_VARIABLE,
/
* 标明注解可以用于注解声明(应用于另一个注解上)*/
ANNOTATION_TYPE,
/** 标明注解可以用于包声明 /
PACKAGE,
/
*
* 标明注解可以用于类型参数声明(1.8新加入)
* @since 1.8
/
TYPE_PARAMETER,
/
*
* 类型使用声明(1.8新加入)
* @since 1.8
*/
TYPE_USE
}

3.@Documented - 标记这些注解是否包含在用户文档中。
4.@Inherited - 标记这个注解是继承于哪个注解类(默认 注解并没有继承于任何子类)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值