java注解示例,java注解,java注解示例MyAn
分享于 点击 37606 次 点评:106
java注解示例,java注解,java注解示例MyAn
java注解示例
MyAnnotation.java
package cn.itcast.gz;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/* * 要加上RetentionPolicy.RUNTIME,注解才保留到运行时,RetentionPolicy是一个枚举, * 取值有CLASS,RUNNTIME,SOURCE * CLASS:表示注解保留在class文件中,不保留到类被加载到JVM中运行的时候 * RUNNTIME:表示注解既保留在class文件中,又保留到JVM加载类运行的时候。 * SOURCE:表示注解只在编译是被编译器检查,并不保留在class文件中 *//* * 注解相当于是一个类 *//* * ElementType.TYPE表示该注解可以标注在一个类、接口,枚举身上,为什么用TYPE,而不是Class呢? * 因为TYPE表是的范围更加广,除了可以表示Class之外,还可以表示interface Enum等 *//* * 注解的注解称为元注解 */@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE})public @interface MyAnnotation { //注解的属性是字符串类型 String name() default "龙"; //注解的属性是数组 String [] tels() default {"136","137"}; //注解的属性是枚举 MyEnum season() default MyEnum.Spring; //注解的属性类型是注解 MetaAnnotation age() default @MetaAnnotation(age=25); String value();}
AnnotationTest.java
package cn.itcast.gz;/* * @某个注解,相当于是某个注解的一个实例,注解也相当于是一个类 */@MyAnnotation(name="long",tels={"110","120"},season=MyEnum.Winter,age=@MetaAnnotation(age=18), value = "value属性的值")//当注解中只有名字为value的属性是,value可以省略,如果还有其他属性,value不能省略//@MyAnnotation("value属性的值")public class AnnotationTest { /** * @param args */ public static void main(String[] args) { //通过反射判断AnnotationTest上面是否有@MyAnnotation标记 if(AnnotationTest.class.isAnnotationPresent(MyAnnotation.class)) { //得到注解的实例 MyAnnotation annotation = (MyAnnotation)AnnotationTest.class. getAnnotation(MyAnnotation.class); //取出注解上面的name属性 System.out.println(annotation.name()); //取出注解上面的tels属性 System.out.println(annotation.tels()); //取出注解上面的season属性 System.out.println(annotation.season()); //取出注解上面的age属性 System.out.println(annotation.age().age()); } }}
用户点评