java小白注解、自定义注解

一、概念

注解是一系列元数据,关键字为Annotation,它提供数据用来解释程序代码,但是注解并非是所解释的代码本身的一部分。注解对于代码的运行效果没有直接影响。通俗点说,注解类似于标签,它堆程序没有什么直接的影响,没有它们,程序一样运行,它是用来标注一段程序的,比如@target注解,就是用来标注它所修饰的代码是类、方法、属性、或者其他。另外,注解也有属性。

@Target({ElementType.METHOD,ElementType.TYPE,ElementType.FIELD})//表示此注解可以加在方法上, @Retention(RetentionPolicy.SOURCE) @interface Test{ int age() default 0; String value() default "lemon"; } @Test(age = 10) public void eat(){ System.out.println("又到了干饭时间了!"); }

二、作用

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

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

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

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

三、分类

1.jdk注解:

a)@Override :用来标识重写方法,之前我们在继承那见到过

b)@Deprecated:这个注解用来标记过时的元素,编译器在编译阶段遇到这个注解时会发出提醒警告,告诉开发者正在调用一个过时的元素比如过时的方法、过时的类、过时的成员变量。

c)@SuppressWarnings(“deprecation”) 忽略警告

d)@SafeVarargs jdk1.7出现,堆污染,不常用

e)@FunctionallInterface 函数式接口注解jdk1.8出现,配合函数式编程拉姆达表达式,不常用

2.元注解:可以标注在注解上的注解。

a)@Retention:Retention 的英文意为保留期的意思。也为生命周期,当 @Retention 应用到一个注解上的时候,它解释说明了这个注解的的存活时间。

参数:参数只能有一个,也就是三选一

  • RetentionPolicy.SOURCE 源文件保留,注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。
  • RetentionPolicy.CLASS .class文件保留,注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。
  • RetentionPolicy.RUNTIME 运行时保留,注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,所以在程序运行时可以获取到它们。

b)@Target Target 是目标的意思,@Target 指定了注解运用的地方。你可以这样理解,当一个注解被 @Target 注解时,这个注解就被限定了运用的场景。

参数:参数可以有多个,格式:{ , }

  • ElementType.ANNOTATION_TYPE 可以给一个注解进行注解
  • ElementType.CONSTRUCTOR 可以给构造方法进行注解
  • ElementType.FIELD 可以给属性进行注解
  • ElementType.LOCAL_VARIABLE 可以给局部变量进行注解
  • ElementType.METHOD 可以给方法进行注解
  • ElementType.PACKAGE 可以给一个包进行注解
  • ElementType.PARAMETER 可以给一个方法内的参数进行注解
  • ElementType.TYPE 可以给一个类型进行注解,比如类、接口、枚举

c)@Inherited 允许子注解继承

d)Documented 生成javadoc时会包含注解,不常用

e)@Repeatable注解为可重复类型注解,可以在同一个地方多次使用,不常用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值