基础加强_注解Annotation
来源:互联网 发布:ok三连冠科比数据 编辑:程序博客网 时间:2024/05/01 21:57
------- android培训、java培训、期待与您交流! ----------
注解Annotation
一个注解就是一个类,使用注解就在使用这个注解的对象。注解相当于一种标记,javac编译器,开发工具和其他程序可以用反射来获取注解。
注解可以加在包,类,字段,方法,方法的参数以及局部变量上。
java.lang包的3个基本注解:
@SupressWarnings("deprecation")//注解,压缩警告 RetentionPolicy.SOURCE@Deprecated//过时 RetentionPolicy.RUNTIME
@Override//重写 RetentionPolicy.SOURCE 使用范围METHOD
java.lang.annotation 注解包
@Retention(value)指示注释类型的注释要保留多久。默认为 RetentionPolicy.CLASS。(CLASS RUNTIME SOURCE 3种)@Target(value) 包,注解,类,构造方法,字段,方法,方法的参数以及局部变量。默认为任何元素
从代码学习注解的应用:
1、自定义注解 ItcastAnnotation
@Retention(RetentionPolicy.RUNTIME) //运行时有效@Target({ElementType.METHOD,ElementType.TYPE}) //使用范围为方法和类,采用数组的方式设置属性public @interface ItcastAnnotation {String color() default "blue";String value();//每个注解都有Vlaue()属性int[] arrayAttr() default {3,4,4};EnumTest.TrafficLamp lamp() default EnumTest.TrafficLamp.RED;MetaAnnotation annotationAttr() default @MetaAnnotation("lhm");}
注解类型的属性:
MetaAnnotation annotationAttr() default @MetaAnnotation("xxxx");@MyAnnotation(annotationAttr=@MetaAnnotation(“yyy”) )
可以认为上面这个@MyAnnotation是MyAnnotaion类的一个实例对象,同样的道理,
可以认为上面这个@MetaAnnotation是MetaAnnotation类的一个实例对象,调用代码如下:
MetaAnnotation ma = myAnnotation.annotationAttr();
System.out.println(ma.value());
@MetaAnnotation("xxxx")创建注解的实例
定义注解 MetaAnnotation
public @interface MetaAnnotation {String value();}
测试注解 AnnotationTest类
@ItcastAnnotation(annotationAttr=@MetaAnnotation("flx"),color="red",value="abc",arrayAttr=1) //多个参数,需要分别指定参数值public class AnnotationTest {@SuppressWarnings("deprecation")@ItcastAnnotation("xyz")//如果注解中有一个名称为value的属性,且你只想设置value属性//(即其他属性都采用默认值或者你只有一个value属性),那么可以省略value=部分,例如:@MyAnnotation("lhm")。public static void main(String[] args) throws Exception{System.runFinalizersOnExit(true);//通过反射获取注解属性if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){ItcastAnnotation annotation = (ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class);System.out.println(annotation.color());System.out.println(annotation.value());System.out.println(annotation.arrayAttr().length);System.out.println(annotation.lamp().nextLamp().name());System.out.println(annotation.annotationAttr().value());}Method mainMethod = AnnotationTest.class.getMethod("main", String[].class);ItcastAnnotation annotation2 = (ItcastAnnotation)mainMethod.getAnnotation(ItcastAnnotation.class);System.out.println(annotation2.value());}@Deprecatedpublic static void sayHello(){System.out.println("hi,传智播客");}}
------- android培训、java培训、期待与您交流! ----------
- 基础加强_注解Annotation
- 基础加强- 注解(Annotation)
- Java基础加强---Annotation(注解)
- 基础加强—注解(Annotation)
- java基础加强-注解(Annotation)
- JAVA基础加强_注解
- Java基础加强总结--注解(Annotation)
- 黑马程序员_基础加强_注解
- 黑马程序员_基础加强_注解
- 黑马程序员_基础加强_注解
- 黑马程序员_基础加强(5) 注解
- 黑马程序员_基础加强(注解)
- 黑马程序员_基础加强之注解
- 【黑马程序员】java基础加强_注解
- 黑马程序员---<<基础加强---1.5新特性(中)(注解(Annotation))>>
- 【黑马程序员】java基础加强-------注解(annotation)
- Java基础加强总结(一)——注解(Annotation)
- Java基础加强总结(一)——注解(Annotation)
- jquery插件开发
- 自动为分区表增加分区存储过程
- TLD取经之路(4)-- 始于足下--tldInit.m中涉及到的相关函数
- spring注解方式自动注入接口的实现子类
- 使用mfc CWnd 自绘实现一个类似于QQ好友的一个控件
- 基础加强_注解Annotation
- ios多台电脑,共用一个证书密密钥
- SAP BO与SAP业务系统的连接方式
- exit与return的区别
- Struts2返回JSON数据的具体应用范例
- java mail 笔记
- C++之const成员函数
- Java 图片加水印
- 80x86中的ldt 与 gdt 理解