引言:Java中注解使我们学习框架是常常用到的概念之一;随着自己学习java的时间积累,对它的认识越来越清晰,今天又重新温习了以便Java的注解:所以记下如下笔记:
一:什么是Java注解?
- 1:java注解是Java的特性之一,也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
语法:@注解名称
注解的作用:替代xml配置文件!
servlet3.0中,就可以不再使用web.xml文件,而是所有配置都使用注解!
注解是由框架来读取使用的!
二:怎么使用
- 1:定义注解类:
- 1.1:注解里面的属性只能为以下类型:
- <1>:8中基本数据类型
- <2>:String类型
- <3>:class类型
- <4>:注解类型
- <5>:枚举类型
- <6>:以上类型的一维数组类型
@interface myAnnoa{
String name();
int age() default 23;
}
//注意:有默认值的我们再赋值时可以不用写
@myAnnoa(name='陈鹏',age=22)
public class demo{
}
+ 1.2:注解的适用范围:
注解的作用目标:
* <1>类 ElementType.TYPE,
* <2>方法 ElementType.METHOD
* <3>构造器 ElementType.CONSTRUCTOR
* <4>参数 ElementType.PARAMETER
* <5>局部变量 ElementType.LOCAL_VARIABLE
* <6>包 ElementType.PACKAGE
* <7>属性 ElementType.FIELD
* <8>注解类型 ElementType.ANNOTATION_TYPE
通过适用关键字@Target里面的ElementType类确定
@Target(value={ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
@interface MyAnno1 {
}
PS:属性名字为value时;在给注解类型赋值时可以不用使用键直接赋值即可
如:
@Target(ElementType.TYPE, ElementType.METHOD, ElementType.FIELD)
@interface MyAnno1 {
}
+ 1.3: 注解保留策略
* 源代码文件(SOURCE):注解只在源代码中存在,当编译时就被忽略了
* 字节码文件(CLASS):注解在源代码中存在,然后编译时会把注解信息放到了class文件,但JVM在加载类时,会忽略注解!
* JVM中(RUNTIME):注解在源代码、字节码文件中存在,并且在JVM加载类时,会把注解加载到JVM内存中(它是唯一可反射注解!)
限定注解的保留策略语法:
@Retention(RetentionPolicy.RUNTIME)