`

黑马程序员----注解

 
阅读更多
注解

---------------------- android培训java培训、期待与您交流! ----------------------


一.注解
相当于一个标记,在程序中加了注解就等于为程序打了某种标记。没加,则等于没有某种标记,以后javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无任何标记,看你有什么标记,就去干相应的事。标记可以加在包、类、字段、方法、方法的参数以及局部变量上

java源文件 class文件 内存中的字节码
@Retention(value:runtime/source/class)//该注解注解的注解表示此注解的使命周期应该在什么时期
@Target(Element.XX,Element.XX)//注解应放在什么地方,比如类、方法、包、等,可以在多个地方出现时,中间加,号

二.注解的属性及使用
可以为8中基本数据类型、String、数组、枚举、Class、注解,其他类型会编译报错
Java代码   
1.	//----部分代码----------------------------------- 
2.	//定义一个注解类 
3.	import java.lang.annotation.Retention; 
4.	import java.lang.annotation.RetentionPolicy; 
5.	
6.	@Retention(RetentionPolicy.RUNTIME)//标记生命周期是运行时 
7.	public @interface ItcastAnnotation { 
8.	String color() default "blue";//可以为某个变量设值缺省属性 
9.	String value();//如果只有value属性需要设值时,可以在调用时省去“value=”直接写值。 
10.	int[] arrys(); //数组类型 
11.	EnumTest.TrafficLamp lamp() default EnumTest.TrafficLamp.RED;//枚举类型 
12.	MetaAttotation attotation() default @MetaAttotation("haha");//注解类型 
13.	} 
14.	//定义一个应用了注解的类 
15.	//这个注解标记定义在类上还是方法上要看定义注解的类是如何定义的,也就是看@Target()这个注解的定义 
16.	//"()"这个括号里写的属性是在定义的注解类里写的属性,没有写缺省值的也就是default的必须出现在括号中。 
17.	@ItcastAnnotation(value="value",arrys={1,2,3},attotation=@MetaAttotation("hehe")) 
18.	
19.	//定义一个应用了注解的类进行反射操作的类 
20.	public static void main(String[] args) { 
21.	//检查应用了注解的类是由有要反射的那个注解 
22.	if (AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)) { 
23.	//获得注解的对象 
24.	ItcastAnnotation annotation = AnnotationTest.class.getAnnotation(ItcastAnnotation.class); 
25.	//通过对象调用注解中的属性 
26.	System.out.println(annotation.color()); 
27.	System.out.println(annotation.value()); 
28.	System.out.println(annotation.arrys().length); 
29.	System.out.println(annotation.lamp().nextLamp());//这个枚举是前面讲到过的红绿灯示例中的类 
30.	System.out.println(annotation.attotation().value()); 
31.	} 
32.	/*----运行结果 
33.	blue 
34.	value 
35.	3 
36.	GERRN 
37.	hehe 
38.	*/ 
39.	//----代码结束----------------------------------- 


---------------------- android培训java培训、期待与您交流! ---------------------- 详细请查看:http://edu.csdn.net/heima
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics