Java基础七:注解Annotation使用说明
2010-05-28 19:14
387 查看
import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import com.mengya.EnumStudy; /** * 自己定义的一个 Annotation * * @author 张明学 * */ /** * 定义注解时可以加上@Retention注解:用来设置注释保留策略。该注解有个value属性是个RetentionPolicy枚举 * RetentionPolicy.CLASS(默认值):表示:编译器将把注释记录在类文件中,但在运行时 VM 不需要保留注释。 * RetentionPolicy.RUNTIME:表示:编译器将把注释记录在类文件中,在运行时 VM 将保留注释,因此可以反射性地读取。 * RetentionPolicy.SOURCE:表示:编译器要丢弃的注释。 */ /** * 定义注解时可以加上@Target注解:用来指示注释类型所适用的程序元素的种类,该注解有个value属性是个数组 * 数组存放是个ElementType枚举:ElementType.METHOD表示方法上面 * ElementType.TYPE表示:类、接口(包括注释类型)或枚举声明 ElementType.FIELD表示:字段声明(包括枚举常量) ...... */ /** * 注解属性的定义可以是:8个基本数组类型,class类型,String类型,枚举类型,注解类型,以上类型的数组 */ @Retention(value = RetentionPolicy.RUNTIME) // @Target(value = ElementType.METHOD) @Target(value = { ElementType.METHOD, ElementType.TYPE, ElementType.FIELD }) public @interface MyAnnotation { // 定义Annotation的一个属性,可以不定义任何属性值 String value(); // 设置注解的默认值(使用该注解时不用为该属性赋值) String color() default "red"; // 设置注解属性类型为数组 int[] arrayAttr() default { 1, 2, 3 }; // 设置注解属性类型为枚举类型(TranfficLamp是EnumStudy内部定义的) EnumStudy.TranfficLamp lamp(); // 设置注解属性类型为注解类型 MetaAnnotation annotationAttr(); }
另一个注解:
public @interface MetaAnnotation { String value(); }
关相注解的学习:
import com.mengya.EnumStudy; /** * Annotation 注解 * * @author 张明学 * */ // 如果只有一个value属性,在使用该注解时可以不用使用value=""可以直接使用 // @MyAnnotation("mengya") // arrayAttr属性为数组,如果数组中的元素只有一个则可以省去{}表示数组 // @MyAnnotation(value = "mengya", arrayAttr = 1) @MyAnnotation(value = "mengya", arrayAttr = { 5, 6, 7 }, lamp = EnumStudy.TranfficLamp.RED, annotationAttr = @MetaAnnotation("xiaobojava")) public class AnnotationStudy { public static void main(String[] args) { // 通过class字节码获取某个类是否有某种类型的注解 if (AnnotationStudy.class.isAnnotationPresent(MyAnnotation.class)) { MyAnnotation myAnnotation = AnnotationStudy.class .getAnnotation(MyAnnotation.class); System.out.println(myAnnotation.getClass().getName()); System.out.println("value属性值:" + myAnnotation.value()); System.out.println("color属性值:" + myAnnotation.color()); System.out.println("arrayAttr数组属性值:" + myAnnotation.arrayAttr()); System.out.println("lamp枚举属性值:" + myAnnotation.lamp()); System.out.println("annotationAttr注解属性值:" + myAnnotation.annotationAttr().value()); } } }
$Proxy4 value属性值:mengya color属性值:red arrayAttr数组属性值:[I@1bf73fa lamp枚举属性值:RED annotationAttr注解属性值:xiaobojava
阅读更多
相关文章推荐
- Java基础-学习使用Annotation注解对象
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
- Java基础-学习使用Annotation注解对象
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
- Java基础-学习使用Annotation注解对象
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
- Java基础复习笔记12Java自定义注解Annotation的使用
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
- paip.Java Annotation注解的作用and 使用
- Java语法基础之函数的使用说明
- JUnit 4 使用 Java 5 中的注解(annotation)
- java基础加强--注解的入门与使用
- paip.Java Annotation注解的作用and 使用
- java 注解annotation的使用,以及反射如何获取注解
- 【Java】注解 annotation的介绍与使用
- JUnit 4 使用 Java 5 中的注解(annotation)
- Java基础加强总结(一)——注解(Annotation)
- JUnit 4 使用 Java 5 中的注解(annotation)
- java 中JUint4 中使用注解(annotation)
- 【黑马程序员】java基础加强-------注解(annotation)