1.自定义注解格式
定义注解:使用@interface.
------------------------------------------------------------------
@Retention(设置存在的时期)
@Target(设置贴在哪些元素之上)
public @interface 注解名称{
注解中的成员,抽象方法---->属性.
数据类型 方法名() default 默认值;
}
2.获取注解的一些常用方法
注解可以贴在类上,方法上,字段上,构造上.
我们可以通过Class,Method,Field,Constructor对象来获取注解对象.
------------------------------------------------------------
Annotation getAnnotation(Class<A> annotationClass) 如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。
Annotation[] getAnnotations() :返回该成员上所有的注解.
boolean isAnnotationPresent(Class annotationClass) :判断当前成员上是否标注了指定的注解.
使用Eclipse新建一个注解VIP
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME) //表示保存的时期为运行时期
@Target(ElementType.TYPE) //表示只能修饰类,接口,枚举
public @interface VIP {
//这里面都是抽象方法,方法名跟以前不一样,都是名词
String value(); //这里没有给默认值,那么在使用的时候就必须给值,相当于是给方法实现
int age() default 18; //还可以给默认值,给了默认值在使用的时候就可以不用给值
String[] favs() default {"java","js"}; //数据类型可以是数组
}
//测试使用我们自定义的注解VIP
//@VIP(value="杨哥")//注意:方法名称是value的话,而且只写一个的话,可以不用写,看下面
@VIP("杨哥")
class Demo{
}
@VIP(value="杨哥",age=19,favs={"c"})//这里给了值之后,default的值就不起作用了
class Demo2{
}