java注解之注解的使用和定义

1.自定义注解格式

定义注解:使用@interface.
------------------------------------------------------------------
@Retention(设置存在的时期)
@Target(设置贴在哪些元素之上)
public  @interface  注解名称{
         注解中的成员,抽象方法---->属性.
         数据类型 方法名() default  默认值;
}

2.获取注解的一些常用方法

注解可以贴在类上,方法上,字段上,构造上.
我们可以通过Class,Method,Field,Constructor对象来获取注解对象.
------------------------------------------------------------
Annotation  getAnnotation(Class annotationClass) 如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。 
Annotation[] getAnnotations() :返回该成员上所有的注解.
boolean isAnnotationPresent(Class  annotationClass) :判断当前成员上是否标注了指定的注解.


使用Eclipse新建一个注解VIP

java注解之注解的使用和定义_第1张图片


java注解之注解的使用和定义_第2张图片

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{
	
}


你可能感兴趣的:(注解)