Annotation注解----详解(2)

如何自定义一个注解?首先注解一个特殊的类,类中可以定义一些属性,这些属性的值,可以通过在被修饰的方法或类等上进行赋值。

1.自定义注解的目标:

原来写在配置文件中的信息,可以通过注解描述。这样可以通过注解来告诉类如何运行

定义Annotation使用@interface关键字, 如下所示:

public @interface MyAnnotation {
	
}
2.配置文件中的信息,在注解中采用属性来描述,注解中的属性类型只能是如下类型:

String类型,如String name();

8种基本数据类型

Class类型

枚举类型

注解类型,此类型功能类似于xml配置文件中标签中在套一个标签.通过注解中嵌套另外一个注解,可以实现xml文件中类似下面的复杂配置。

<a>

<b> </b>

</a>

以上类型的一维数组

3.注解中的每种数据描述都使用如下格式:

Type 属性名();  如String name();

4.带有默认值的属性,格式如下:

String name() default "aaa" ;
5.特殊属性value,如果注解中带一个名为value的属性,那么使用注解是可以省略"value="部分, 如@MyAnnotation("xxx");

6.特殊属性value[],如果注解中带有一个名为value的数组属性,那么注解是也可以省略"value="部分,如:

@MyAnnotation({"aaa", "bbb"})


下面是定义一个MyAnnotation注解及使用

package cn.itcast.annotation;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME) //元注解,注解的注解
public @interface MyAnnotation {
	String name() default "aaa" ; //基本数据类型
	Class clazz();  //Class类型
	Gender gender() default Gender.FEMALE; //枚举类型
	MyAnnotation2 an2();  //注解类型
	double[] num() default{1, 2}; //一维数组类型
}

@MyAnnotation1(name="lisi", gender=Gender.FEMAIL, clazz=String.class, an2=@MyAnnotation2(age=31), num={2,4})
	public void method1(String name, Gender gender, Class clazz, int age){
		
	}

7.当注解只有一个属性,且属性名为value时,方法上添加此注解可以不加“value=”

public @interface MyAnnotation3 {
	int value() default 32;
}
@MyAnnotation3(33) 
	public void method3(){
		//注解中可以省略"value="部分,即@MyAnnotation3(33)可写成@MyAnnotation(33)
	}
当注解含有多个属性,且其中有个属性为value, 注解中添加value属性值不能省略value=部分. 当属性中只有一个数组属性,且为属性名为value, value=部分也可以省略。

public @interface MyAnnotation3 {
	String[] value() default {"aa", "bb"};
}
@MyAnnotation4({"dd", "ee"})
	public void method4(){
		
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值