JAVA 注解

注解概述

注解很厉害,它可以增强我们的java代码,同时利用反射技术可以扩充实现很多功能。它们被广泛应用于三大框架底层。传统我们通过xml文本文件声明方式,而现在最主流的开发都是基于注解方式,代码量少,框架可以根据注解去自动生成很多代码,从而减少代码量,程序更易读。例如最火爆的SpringBoot就完全基于注解技术实现。

使用

JDK注解的注解:
@Override标记下边是重写函数
@Deprecated标记就表明这个方法已经过时了,但我就要用,别提示我过期
@SuppressWarnings(“deprecation”) 忽略警告
@SafeVarargs jdk1.7出现,堆污染,不常用
@FunctionallInterface jdk1.8出现,配合函数式编程拉姆达表达式,不常用
元注解
描述注解的注解,就5个:
@Target 注解用在哪里:类上、方法上、属性上
@Retention 注解的生命周期:源文件中、class文件中、运行中
@Inherited 允许子注解继承
@Documented 生成javadoc时会包含注解,不常用
@Repeatable注解为可重复类型注解,可以在同一个地方多次使用,不常用

常见元注解的使用范围

@Target ElementType.class
描述注解的使用范围:

ElementType.ANNOTATION_TYPE 应用于注释类型

ElementType.CONSTRUCTOR 应用于构造函数

ElementType.FIELD 应用于字段或属性

ElementType.LOCAL_VARIABLE 应用于局部变量

ElementType.METHOD 应用于方法级

ElementType.PACKAGE 应用于包声明

ElementType.PARAMETER 应用于方法的参数

ElementType.TYPE 应用于类的元素

@Retention RetentionPolicy.class
定义了该注解被保留的时间长短,某些注解仅出现在源代码中,而被编译器丢弃;

而另一些却被编译在class文件中; 编译在class文件中的注解可能会被虚拟机忽略,而另一些在class被装载时将被读取。

为何要分有没有呢?没有时,反射就拿不到,从而就无法去识别处理。

SOURCE 在源文件中有效(即源文件保留)

CLASS 在class文件中有效(即class保留)

RUNTIME 在运行时有效(即运行时保留)

自定义注解

语法

 @interface wxn;
//注解的出现位置
@Target({ElementType.TYPE,ElementType.METHOD,ElementType.PARAMETER})//出现在类里
//注解的生命周期
@Retention(RetentionPolicy.SOURCE)//程序运行时
@interface wxn{
	int w() default 1;//给属性赋默认值
	//注解的特殊属性--特殊值在用时可以直接赋值
	int value() default 2;
}

注解的使用

//使用注解
@wxn(2)
class A{
	int age;
	@wxn(3)
	public void a(int i) {
	}
}

其实这是我第一次接触注解,也没啥理解…后续如果有新的理解会继续做整理(现在感觉这个东西不知道有啥用…)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值