注解
一种Java语言用来在代码中添加额外信息的形式化方法,使得程序可以在编译或者运行之后的某个时刻很方便的使用这些额外的信息(数据)
1.1 注解用在哪
- 类之前
- 方法之前
- 成员之前
1.2 特殊的注解
-
@Retention
:改变自定义注解的存活范围
RetentionPolicy
:
1.SOURCE
:在源文件中有效(即java源文件保留)
2.CLASS
:在class文件中有效
3.RUNTIME
:在运行时有效 -
@Target
:作用指定该注解用在什么地方
ElementType
:
1.TYPE
:类上
2.METHOD
:只能用在方法上
3.FIELD
:只能用在属性上
pblic @interface AnnotationName{
//定义体
}
- 注解的定义就是参数的名称,返回值类型就参数类型(返回值类型只能是基本类型,Class,String,enum,注解类)
- 一个方法就表示一个配置,一个方法就对应一个键值对
@Retention(value = RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface NameConstraint{
// 可以把注解看成一个特殊的接口,如果仅有一个value方法,注解可以不写成键值对形式,直接写值
// String minLength() default "";
int maxLength();
int value();
}
使用:
@NameConstraint(maxLength = 10)
public String name;
举例:
//定义
@Retention (RetentionPolicy.RUNTIME)
@Target (ElementType.METHOD)
public @interface MethodAnnotation {
String information();
}
//使用
@MethodAnnotation(information = "类的信息..")
public void like() {
System.out.println("爱生活,爱学习");
}
//反射获取注解信息
Class clazz = Student.class;
Method like = clazz.getDeclaredMethod("like");
if (like.isAnnotationPresent(MethodAnnotation.class)){
MethodAnnotation likeAnnotation = like.getAnnotation(MethodAnnotation.class);
return likeAnnotation.information();
}
return "";
网友评论