1.Annotation 注解
- 不是代码,对代码做出解释
- 其他程序可以通过反射来机制读取该程序的注解
格式: @name 或者 @name(parameter="value")
2.内置注解
定义在java.lang这个包中
3. meta-annotation 元注解
用于解释注解的注解,对一般的注解提供提供说明
常见类型:
@Target:表明注解可以用在哪些地方(方法,类……)
@Retention:表明注解的有效范围(在源码/生成class/运行时有效)
范围大小:Runtime>Class>Source
@Document:表示该注解会包含在javadoc文档中
@Inherited:表示子类可以继承父类的该注解
4.注解内参数
注解中可以有参数,参数格式为:
- 参数类型 参数名字();
- 参数可以有默认值, 参数类型 参数名字() default 默认值;
如果参数,没有默认值,则必须在使用注解时显示给出参数值,格式为:
- @注解名(参数名字 = 参数值)
参数可以不按顺序写
当注解只有一个参数,且参数名字为value时,使用注解时可以省略参数名,格式为:
- @注解名(参数值)
代码示例:
package AnnotationTest;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
public class A2 {
@MyAnnotation2(num=8)
void test(){
}
@MyAnnatation3(99)
void test2(){
}
}
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation2{
String name() default "apple";
int num();
boolean flag() default false;
}
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnatation3{
int value();
}