---------------------- android培训、java培训、期待与您交流! ----------------------
注解为我们在代码中添加一些标记,在之后java编译器,开发工具等可以利用反射来了解你的类以及各个成分上的有无任何标记,并按照标记去做相应的事,标记可以加在包,类,字段,方法,方法的参数以及局部变量。Java内置的三种注解:
@Override 表示当前方法是覆盖父类的方法。
@Deprecated 表示当前元素是不赞成使用的。@SuppressWarnings 表示关闭一些不当的编译器警告信息。
其中@override使用较多而且只需要简单声明即可,而且其他的注解是有其自己的配置参数的,使用@SuppressWarnings的时候会出现@SuppressWarnings("deprecation");在括号里给出了可供配置的值,代表这个方法是过时的,注解加在某些元素上后相当于这些元素有了预定义的属性。
自定义注解在开发中有些类似于接口的定义,使用@interface来声明一个注解,这里可以看到两个元注解@Retention和@Target,用来声明注解本身的行为。@Retention用来声明注解的保留时期,参数有CLASS,RUNTIME,SOURCE三种,分别表示注解保留在编译时期,运行时期和源代码时期。只有当声明为RUNTIME的时候,才能够在运行时刻通过反射API来获取到注解的信息。@Target用来声明注解可以被添加到哪些类型的元素上,如类型,方法上。另外可以给注解增加各种属性。
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface ItcastAnnotation{
String color() default "blue";
int[] arr() default {3,5}
enum类型和注解类型也可以作为属性。
}
将自定义的注解加到某个类上,再通过反射检测该类是否具有这个注解。在使用时注解的属性可以直接赋值,不赋值则取默认值
@ItcastAnnotation(color="red",arr={2,3,4})
public class AnnotationTest
{
public static void main(String[] args) throws Exception
{
if(Annotation.class.isAnnotationPresent(ItcastAnnotation.class))
ItcastAnnotation ann=(ItcastAnnotation)AnnotationTest.class.getAnnotation(Annotation.class);
}
}
---------------------- android培训、 java培训、期待与您交流! ----------------------详细请查看: http://edu.csdn.net/heima