系统内置了三种Annotation:
@Override,指明要进行重写方法;@SuppressWarnings:指压制警告,使用方法:@Suppress Warnings("unchecked");
@Deprecated:指明不建议使用的;
自定义Annotation:
Annotation的使用方法:
//最简单的一种
1 @interface MyAnnotation{ 2 public String value(); 3 }
1 @interface MyAnnotation{ 2 public String value(); 3 public String key(); 4 }
1 @interface MyAnnotation{ 2 public String[] value(); 3 }
1 @interface MyAnnotation{ 2 public String value() default "hh"; 3 }
1 enum Person{ 2 LV,BB; 3 } 4 @interface MyAnnotation{ 5 public Person value() default Person.BB; 6 }
四个作用于Annotation的Annotation:
@Retetion:指定Annotation的作用范围,value=RUNTIME/CLASS/SOURCE,RUNTIME:保存在源文件,.class文件和JVM;CLASS:保存在源文件和.class文件;
SOURCE:保存在源文件;
@Target:指定Annotation作用的位置;
@Documented:指示某一类型的注释将通过 javadoc 和类似的默认工具进行文档化;
@Inherited:指示注释类型被自动继承,注意,如果使用注释类型注释类以外的任何事物,此元注释类型都是无效的;
反射机制与Annotation:
public <A extends Annotation> A getAnnotation(Class<A> annotationClass)
public Annotation[] getDeclaredAnnotations()
public boolean isAnnotation();
怎样让注解起作用:
注解是用于修饰的,语义上与注释相似,但是注解是java代码的一部分,会被编译成.class文件;
要让注解起作用,通常用注解修饰方法或者类,然后用注解处理器对被修饰的方法或者类进行处理,真正进行操作的是注解处理器,注解作为用于定位的工具,让注解处理器定位到具体的类或者方法,然后进行处理,确定定位是通过反射进行的;
浙公网安备 33010602011771号