跟王老师学注解:自定义注解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跟王老师学注解:自定义注解相关的知识,希望对你有一定的参考价值。
跟王老师学注解(四):自定义注解
主讲教师:王少华 QQ群号:483773664
到此,我们已经学习完了JDK提供的3种内建注解及4种元注解,下面来了解自定义注解
一、注解类型(一)注解类型与接口:注解类型是一种接口,但它又不同于接口
1、注解类型使用关键字@interface而不是interface
1 2 | public @interface TestAno { } |
@interface隐含继承java.lang.annotation.Annotation接口
2、注解类型的方法定义是独特的、受限制的
1 |
|
方法必须声明为无参数,无异常抛出
方法名就是成员变量名,方法的返回值就是成员变量的类型
方法的后面可以使用default关键字,后面跟一个默认值
(二)、注解类型与接口的相似之处
都可以定义常量、静态成员的类型。注解类型也可以像接口一样被现实或被继承
二、自定义注解类型(一)、定义
12345678 @Target
({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.CONSTRUCTOR, ElementType.LOCAL_VARIABLE})
@Retention
(RetentionPolicy.RUNTIME)
public
@interface
AnnotationTest{
//定义两个成员变量name和age
//用default关键字为两个成员变量赋初始值
String name()
default
"Jack"
;
int
age()
default
20
;
}
(二)、使用
1、使用定义了成员变量的注解时,要为成员变量赋值
123456 public
class
TestAnnotation {
@AnnotationTest
(name=
"wangsh"
,age=
21
)
public
void
info(){
}
}
2、如果注解类型的成员变量被指定了初始值,则在使用该注解时不对成员变量赋值也可以
123456 public
class
TestAnnotation {
@AnnotationTest
public
void
info(){
}
}
3、如果注解类型在定义时没有指定默认值,而在使用时又没有指定值,则会在编译时报错
4、如果注解类型在定义时指定了默认值,而在使用时又指定了值,则默认值会指定值代替。
三、问题来了
1 2 3 4 5 6 7 8 |
@Retention (RetentionPolicy.RUNTIME) public @interface AnnotationTest{ //定义两个成员变量name和age //用default关键字为两个成员变量赋初始值 String name() default "Jack" ; int age() default 20 ; } |
1 2 3 4 5 6 | public class TestAnnotation { @AnnotationTest (name= "wangsh" ,age= 21 ) public void info(){ } } |
1 2 3 4 5 6 | public class TestAnnotation { @AnnotationTest public void info(){ } } |
我们自定义的注解,在开发过程中有什么用呢???!!!这是我们下一节要讲解的内容
以上是关于跟王老师学注解:自定义注解的主要内容,如果未能解决你的问题,请参考以下文章