@interface MyAnno{//所有注解都是Annotation的子类
int age();
String name();
}
使用注解
注解的作用目标:
类,属性,方法,构造器,参数,局部变量
注解属性
定义属性
>格式:类型 属性名();
使用注解时给属性赋值
>@MyAnno(age=100,name="zhang_san")
注解属性的默认值
>@interface MyAnno{
int age() default 100;
String name();
}
名为value的属性的特权
>当使用注解,只给名为value的属性赋值时,可以省略“value=”,例如 @MyAnno("hello");
注解属性的类型
>8中基本类型和String类型,Enum,Class,注解类型,以上类型的一维数组类型
>包装器类型不能使用
使用
@MyAnno1(
a=100,
b="Hello",
c=MyEnum.A,
d=String.class,
e=@MyAnno2(),
f={"!","!!"}//当数组元素的个数为1时,可以省略大括号
)
public class Demo{
}
定义
@interface MyAnno{
int a();
String b();
MyEnum c();
Class d;
MyAnno2 e();
int[] f();
}
作用目标限定
@Target(ElementType.METHOD)//只能用在方法上
@Target(value={ElementType.METHOD,ElementType.TYPE,ElementType.FIELD})
保留策略限定
源代码文件SOURCE,注解只在源代码中存在
字节码文件CLASS,注解还会在class文件中存在
JVM中RUNTIME,注解还会被加载到JVM中
@Retention(RetentionPolicy.RUNTIME)//可以用来反射注解!!!
3164

被折叠的 条评论
为什么被折叠?



