public
static
void
test2
()
{
ArrayList<Object> objects =
new
ArrayList
<>();
三、自定义注解和元注解
3.1 元注解
元注解就是负责注解其他注解的注解,Java定义了4个标准的
meta-annotation
类型,其被用来对其他
annotation
类型进行说明
所在包:
java.lang.annotation
四个元注解:
@Target
:用于描述注解使用范围
@Retention
:表示需要在什么级别保存注解信息
SOURCE < CLASS < RUNTIME
@Documented
:说明该注解将被包含在
javadoc
中
@Inherited
:说明子类可以继承父类中该注解
*
@ClassName
Annotation2
*
@Description
测试元注解
*
@Author
wangwk-a
*
@Date
2022/1/4 20:56
*
@Version
1.0
@MyAnnotation
public
class
Annotation2
{
@MyAnnotation
public
static
void
test
()
{
* 定义一个注解
*
@Target
表示注解可以用在哪些地方,ElementType
*
@Retention
表示注解在什么地方还有效,源码 < class < 运行
*
@Documented
表示注解是否生成在JavaDoc中
*
@Inherited
表示子类是否可以继承父类的注解
*
@author
wangwk-a
@Target(value = {ElementType.METHOD, ElementType.TYPE})
@Retention(value = RetentionPolicy.RUNTIME)
@Documented
@Inherited
@interface
MyAnnotation {
3.2 自定义注解
使用
@interface
自定义注解时,自动继承
java.lang.annotation.Annotation
接口
@interface
用来声明一个注解,格式
public @interface 注解名{定义内容}
其中每一个
方法
实际上是声明了一个配置参数
方法名称就是参数名称
返回值类型就是参数类型(只能是基本类型、
Class
、
String
、
enum
)
可以通过
default
来声明参数的默认值
如果只有一个参数成员,一般参数名为
value
注解元素必须要有值,定义注解元素时,经常使用空字符串、0作为默认值
*
@ClassName
Annotation3
*
@Description
自定义注解
*
@Author
wangwk-a
*
@Date
2022/1/4 21:09
*
@Version
1.0
public
class
Annotation3
{
* 使用注解,如果参数没有默认值,就必须要给值
@MyAnnotation2(name = "nick")
public
static
void
test
()
{
* 自定义注解
*
@author
wangwk-a
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface
MyAnnotation2 {
* 注解的参数:参数类型 + 参数名() default 默认值;
* 默认值为-1则代表不存在
String
name
()
default
""
;
int
age
()
default
0
;
int
id
()
default
-
1
;
String[] schools()
default
{
"西工大"
};
复制代码