p { margin-bottom: 0.21cm; }
注解的属性很像方法 默认是pubic interface (抽象)的
在注解中 数组用{} 表示
定义方法 需要定义返回值 和属性名
String Color();
1. 以把其他属性设置默认值 String color() default "red" ;
2. 定义枚举类型的属性 EnumTest.Trafficlamp lamp() default EnumTest.Trafficlamp. RED ;
3. 在注解中定义注解属性和定义注解属性的默认值: MetaAnnotation annotaionAtrr() default @MetaAnnotation ( "wangxiang" );
例子 :
@Retention (RetentionPolicy. RUNTIME )
@Target ({ElementType. TYPE ,ElementType. METHOD })
public @interface ItcastAnnotaion {
String color() default "red" ;
String value();
int [] arrayArtt() default {1,2,3};
// 枚举类型
EnumTest.Trafficlamp lamp() default EnumTest.Trafficlamp. RED ;
MetaAnnotation annotaionAtrr() default @MetaAnnotation ( "wangxiang" );
}
使用方法:
1.@ItcastAnnotaion (color= "red" )
2. 如果属性返回了值 需要给属性传入相同类型的值
3. 如果一个注解只有一个属性需要必须填写,并且此属性的名字为value 那么此属性可以不用写属性名和= 例如@SuppressWarnings ( "deprecation" )
4. 如果数组中只有一个值 可以直接用 属性 = 值表示 例如 arrayArtt 是一个数组 如果使用的时候只需要给他传递一个值 就可以 arrayArtt=8
5. 在注解中给注解中的注解赋值 : annotaionAtrr= @MetaAnnotation ( "flx" )
例子:
if (AnnotaionTest. class .isAnnotationPresent( ItcastAnnotaion . class )){
// 得到 ItcastAnnotaion 这个注解类
ItcastAnnotaion annotaion = ( ItcastAnnotaion )AnnotaionTest. class .getAnnotation( ItcastAnnotaion . class );
System . out .println(annotaion.color());
System. out .println(annotaion.arrayArtt(). length );
System. out .println(annotaion.lamp().nextLamp());
System. out .println(annotaion.annotaionAtrr().value());
取值方法 : 给属性赋值的时候直接用属性= 值的方式 取值的使用需要把属性当成一个方法取值 及 annotaion.color()