---------------------- android培训、java培训、期待与您交流! ----------------------
JDK 5中引入了源代码中的注解(annotation)这一机制。注解使得Java源代码中不但可以包含功能性的实现代码,还可以添加元数据。注解的功能类似于代码中的注释,所不同的是注解不是提供代码功能的说明,而是实现程序功能的重要组成部分。Java注解已经在很多框架中得到了广泛的使用,用来简化程序中的配置。
我们接触过最多的注解就@overwrite,这是用在子类覆盖父类的方法的时候出现的
注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
我们再来看看@SuppressWarnings()
自定义一个注解
eclipse中很方便的为我们创建注解,和创建类和接口一样
得出以下代码
public @interface ItcastAnnotation{
}
注解就是在接口上加了一个@
接下来调用一下,这里我们运用了反射进行操作
public static void main(String[] args) throws Exception{
if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){
ItcastAnnotation annotation = (ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
}
@Retention(RetentionPolicy.RUNTIME)
public @interface ItcastAnnotation {
}
元注解介绍
既然元注解在注解中很重要,有必要介绍常用的两个注解了。
@Retention元注解分别对应:java源文件、class文件、内存中的字节码。
@Targe元注解
@Target用来声明注解可以被添加在哪些类型的元素上,如类型、方法和域等。
小试一下@target
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface ItcastAnnotation {
}
程序元素类型。此枚举类型的常量提供了 Java 程序中声明的元素的简单分类。
这些常量与 @Target元注解类型一起使用,以指定在什么情况下使用注释类型是合法的。
Class类的父类为Type,这是jdk1.5增加的新类型,接口、类、枚举和注解都是java中的一种类型,用Type描述这类事物
元注解以及其枚举属性值不用记,只要会看jdk提供那几个基本注解的API帮助文档的定义或其源代码,按图索骥即可查到,或者直接看java.lang.annotation包下面的类。
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface ItcastAnnotation {
String color();
}
@ItcastAnnotation(color="red")
public class AnonotationTest{
}
@SuppressWarnings("deprecation")
String value();
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface ItcastAnnotation {
String color() default "blue";
}
@Retention(RetentionPolicy.RUNTIME)
int [] arrayAttr() default {1,2,3};
@MyAnnotation(arrayAttr={2,3,4})
EnumTest.TrafficLamp lamp() ;
@MyAnnotation(lamp=EnumTest.TrafficLamp.GREEN)
MetaAnnotation annotationAttr() default @MetaAnnotation("xxxx");
@MyAnnotation(annotationAttr=@MetaAnnotation(“yyy”) )
MetaAnnotation ma = myAnnotation.annotationAttr();
System.out.println(ma.value());
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net