黑马程序员————java注解初步
来源:互联网 发布:淘宝开店要钱吗 编辑:程序博客网 时间:2024/05/22 15:52
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
注解是什么?
注解相当于标记,加了注解就等于为程序打上标记,以后,javac编译器,开发工具及其他程序可以用反射来了解你的类及各种元素以上的有无何种标记,根据你的标记,执行相应操作。
注解在哪用?
注解可以加在包,类,字段,方法,方法的参数以及局部变量上。
注解举例:
@SuppressWarning("deprecation");//告诉编译器,我知道过时了,你不要拦截我。
@Deprecated;///过时了,别人在调用时,就不能调用。
@Override;//覆盖
自己怎么定义注解?
注解是一个特殊的类,使用@Interface A{}就是一个注解
注解的结构图:
什么是元注解?
在注解类中加入注解,该注解称为元注解。
注解的生命周期
注解声明生命周期---->源文件--->class文件---->内存中的字节码
默认是在class阶段
@Override 在src阶段
@SuppressWarning 在src阶段
@Deprecated在RUNTIME
编译器扫描源代码
编译器扫描二进制
简单的注解实例:
package com.wj.two;import java.lang.annotation.*;@Retention(RetentionPolicy.RUNTIME)//保留在运行期间public @interface ItcastAnnotation {}
package com.wj.two;@ItcastAnnotationpublic class AnnotationTest {public static void main(String[] args){//如果这个类是否使用了某个注解if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){//得到该注解ItcastAnnotation annotation=(ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class);}}}
为注解增加属性:
属性在注解类中是以方法的形式存在。
在得到该属性时,也是以调用方法的形式得到。
如果只有value属性需要设置(其他属性都采用缺省属性),那么就不需要“value=”
数组类型的属性:
当数组元素就只有一个时,就不用打大括号。
注解类型的属性:
MeteAnnotation annotationAttr() default @MetaAnnotation("xxxx");
@MyAnnotation(annotationAttr=@MetaAnnotation("yyy"))
可以认为@MyAnnotation是MyAnnotation类的一个实例对象,同理,@MeteAnnotation 是MeteAnnotation 类的一个实例对象。调用代码如下:
MeteAnnotation ma=MyAnnotation.annotationAttr();
system.out.println(ma.value());
注解示例:
package com.wj.two;import java.lang.annotation.*;@Retention(RetentionPolicy.RUNTIME)//保留在运行期间//修饰注解的注解,指定注解作用在哪个区域@Target({ElementType.METHOD,ElementType.TYPE})public @interface ItcastAnnotation {String color() default "blue" ;String value();//数组类型的注解属性int[] arrayAttr() default {3,4,5};}
package com.wj.two;@ItcastAnnotation(color="red",value="abc",arrayAttr={1,2,3})public class AnnotationTest {public static void main(String[] args){//如果这个类是否使用了某个注解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);}}}
运行结果:
- 黑马程序员————java注解初步
- 黑马程序员—JAVA注解
- 黑马程序员—注解
- 黑马程序员——Java注解(Annotation)
- 黑马程序员java高新技术——注解
- 黑马程序员——Java中的注解
- 黑马程序员——Java中的注解
- 黑马程序员——简析java注解
- 黑马程序员——注解
- 黑马程序员——注解
- 黑马程序员——注解
- 黑马程序员——注解
- 黑马程序员——注解
- 黑马程序员——注解
- 黑马程序员—注解Annotation
- 黑马程序员——JAVA高新技术---注解Annotation---概述,java的三种注解,元注解
- 黑马程序员——面向对象初步
- 黑马程序员入学篇——(14)java 注解
- 获取手机已经安装的所有App的信息
- GDOI2015总结 Day1
- shell 脚本统计当前目录下普通文件个数
- ubuntu 下使用crontab定时执行java程序
- 2.5年, 从0->阿里
- 黑马程序员————java注解初步
- Hadoop2.6.0 MapReduce 源码学习
- 二叉树的前序、中序、后序及层次遍历的递归与非递归源码实现
- div自动换行
- sqilte操作 -- 取排序的第N条数据
- Java笔记之DOS常用命令以及windows常用快捷键
- Q: IOException parsing XML document
- linux文本处理 sort,grep,sed,awk,uniq 用法
- freescale github for imx6