您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
【第16章:Annotation】_自定义Annotation
发布时间:2021-01-08 16:04:38编辑:雪饮阅读()
一个简单的Annotation
定义:
使用:
@MyAnnotation
class Person{}
public class Hello{
public static void main(String args[]){}
};
D:\>javac MyAnnotation.java
D:\>javac Hello.java
D:\>java Hello
可以接收一个值的Annotation
定义:
MyAnnotation.java:
public @interface MyAnnotation{
public String value();
}
使用:
@MyAnnotation("kasumi")
class Person{}
public class Hello{
public static void main(String args[]){}
};
D:\>javac *.java
D:\>java Hello
调用时还可以显式声明参数传给谁
@MyAnnotation(value="kasumi")
class Person{}
public class Hello{
public static void main(String args[]){}
};
D:\>javac *.java
D:\>java Hello
可以接收多个参数的Annotation
定义:
public @interface MyAnnotation{
public String key();
public String value();
}
使用:
@MyAnnotation(key="kasumi",value="霞")
class Person{}
public class Hello{
public static void main(String args[]){}
};
D:\>javac *.java
D:\>java Hello
可以接收数组类型的Annotation
定义:
public @interface MyAnnotation{
public String[] value();
}
使用:
@MyAnnotation(value={"kasumi","snowDrink","momiji"})
class Person{}
public class Hello{
public static void main(String args[]){}
};
D:\>javac *.java
D:\>java Hello
可以设定默认值的Annotation
定义:
public @interface MyAnnotation{
public String[] key() default "kasumi";
public String[] value() default "霞";
}
使用:
@MyAnnotation
class Person{}
public class Hello{
public static void main(String args[]){}
};
D:\>javac *.java
D:\>java Hello
可以使用枚举的Annotation
定义枚举:
MyName.java:
public enum MyName{KASUMI,SNOWDRINK,AYANE;}
定义Annotation:
public @interface MyAnnotation{
public MyName name() default MyName.SNOWDRINK;
}
使用Annotation:
@MyAnnotation(name=MyName.KASUMI)
class Person{}
public class Hello{
public static void main(String args[]){}
};
D:\>javac *.java
D:\>java Hello
设定Annotation的作用范围
注解Annotation按生命周期来划分可分为3类:
1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;
定义一个作用于运行时的Annotation:
import java.lang.annotation.Retention ;
import java.lang.annotation.RetentionPolicy ;
@Retention(value=RetentionPolicy.RUNTIME)
public @interface MyAnnotation{
public String name() default "kasumi";
}
使用Annotation:
@MyAnnotation(name="momiji")
class Person{}
public class Hello{
public static void main(String args[]){}
};
D:\>javac *.java
D:\>java Hello
关键字词:java,Annotation