Java 注解入门
1.什么是注解
- 注解的语法:
@注解名称; - 注解的作用: 用来替代 xml 配置文件; 在 Servlet 3.0 中就可以使用注解来代替配置文件;
- 注解是由框架来读取使用的;
- 所有的注解都是 Annotation 的子类;
- 简单说, 注解是给程序(框架)看到, 而注释是给人看的.
2. 注解的使用
- 定义注解类: 框架的工作; 语法:
public @interface MyAnnotation{....}. - 使用注解: 程序员的工作;
- 读取注解(反射): 框架的工作;
3. 注解的属性
3.1 定义属性
- 格式: 类型 属性名();
// 定义属性
@interface MyAnno2 {
int age(); // 定义属性 age
String name(); // 定义属性 name
String value() default "hello world!"; // value 是带有默认值的属性
}
3.2 使用注解时,给属性赋值
@MyAnno2(age=100, name="zhangsan")
public class Demo{
......
}
3.3 属性名为 value 的特权
- 当使用注解时, 如果只给名为 value 的属性赋值时,可以省略 "value="
例如:@MyAnno(value="hello")可以书写成@MyAnno("hello")
3.4 注解属性的类型
- 八种基本数据类型
- String 类型
- Enum 类型
- Class 类型
- 注解类型
- 以上类型的一维数组类型
- Integer 类型不可以
@MyAnno2(
// 为注解属性赋值
a=100,
b="hello",
c=MyEnum1.A,
d=String.class,
e=@MyAnno3(aa=200,bb="world"),
f={"",""} // 如果数组中的元素个数为1时, 可以省略大括号
)
public class Demo{
}
// 定义注解
@interface MyAnno2 {
int a();
String b();
MyEnum1 c(); // Enum 类型
Class d();
MyAnno3 e();
String[] f(); // 数组类型
}
@interface MyAnno3 {
int aa();
String bb;
}
4. 注解的作用目标限定以及保留策略限定
4.1 注解的作用目标限定
- 使用方式: 在定义注解时,给注解添加
@Target注解;
@Target(value={ElementType.Type, ElementType.METHOD, ElementType.FIELD})
@interface MyAnno2{
}
// ElementType 是枚举类型
// 可选值: TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE,
// ANNOTATION, PACKAGE
4.2 保留策略
- 源代码文件(SOURCE): 注解只能在源代码中存在,当编译时,就被忽略了;
- 字节码文件(CLASS): 注解在源代码中存在,然后编译时,会把注解信息放到 class 文件,但 JVM 在加载类时,会忽略注解;
- JVM (RUNTIME): 注解在源代码,字节码文件中存在,并且在 JVM 加载类时,会把注解加载到 JVM 内存中(它是唯一可反射注解!!)
// 限定注解的保留策略, Retention 为枚举类型
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnno2 {....}
参考资料:
Java 注解入门的更多相关文章
- Java注解入门
注解的分类 按运行机制分: 源码注解:只在源码中存在,编译后不存在 编译时注解:源码和编译后的class文件都存在(如@Override,@Deprecated,@SuppressWarnin ...
- Java 注解 入门
这几天在学习Spring3.x,发觉现在许多框架都用上了java注解功能,然后自己就对java注解这方面初步学习了一下. 首先,注解跟注释不是一个意思,也根本不是同一个事物. 注释就是我们平常平常中对 ...
- java注解入门(含源码下载)
注解(Annotation)是从jdk1.5开始增加的特性.学习注解能够读懂框架的代码:让编程更加简洁,代码更加清晰. 注解概念:java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法. ...
- Java 注解入门实例 && 注解传參
參考 概念:java提供了一种原程序中的元素关联不论什么信息和不论什么元数据的途径和方法 JDK内置系统注解: @Override 用于修饰此方法覆盖了父类的方法; @Deprecated 用于修饰已 ...
- [2]注解(Annotation)-- 深入理解Java:注解(Annotation)自定义注解入门
转载 http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html 深入理解Java:注解(Annotation)自定义注解入门 要深入学习 ...
- 深入理解Java:注解(Annotation)自己定义注解入门
深入理解Java:注解(Annotation)自己定义注解入门 要深入学习注解.我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前.我们就必须要了解Java为我们提供的元注解和相关定义注解的 ...
- Spring框架入门之基于Java注解配置bean
Spring框架入门之基于Java注解配置bean 一.Spring bean配置常用的注解 常用的有四个注解 Controller: 用于控制器的注解 Service : 用于service的注解 ...
- JAVA - Annotation 注解 入门
Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解. Java1.5引入了注解,当前许 ...
- java注解基础入门
前言 这篇博客主要是对java注解相关的知识进行入门级的讲解,包括**,核心内容主要体现在对java注解的理解以及如何使用.希望通过写这篇博客的过程中让自己对java注解有更深入的理解,在工作中可以巧 ...
随机推荐
- 基于React实现的【绿色版电子书阅读器】,支持离线下载
代码地址如下:http://www.demodashi.com/demo/12052.html MyReader 绿色版电子书阅读器 在线地址:http://myreader.linxins.com ...
- Linux-信号详解
1.Linux支持的所有信号: $ kill -l ) SIGHUP ) SIGINT ) SIGQUIT ) SIGILL ) SIGTRAP ) SIGABRT ) SIGBUS ) SIGFPE ...
- <转>C++位运算详解
原文转自:http://www.crazycpp.com/?p=82 前言 以前收藏过一篇讲C++位操作的文章,这次博客搬家,以前的数据都没有保留,整理谷歌网站管理后台的时候,发现不时的还有网友有在查 ...
- rtp协议详解/rtcp协议详解
转自:http://www.cnblogs.com/li0803/archive/2010/11/20/1882792.html 1.简介 目前,在IP网络中实现实时语音.视频通信和应用已经成为网络应 ...
- android之ScrollView里嵌套ListView(转)
hi,大家好,研究完ScrollView嵌套ScrollView之后,本人突然又想研究ScrollView里嵌套ListView了. 如果还不知道ScrollView嵌套ScrollView是怎么实现 ...
- tony_CENTOS启动方式设置
方法: 在etc文件夹下面有个初始加载文件是用来启动系统的,系统在启动的时候先去env中找到shell的必要配置,然后把shell启动起来,那么再然后就要启动整个系统了,到底是启动图形界面呢,还是字符 ...
- unity, 对于Debug.Log输出的log,可以双击定位到代码
unity, 对于Debug.Log输出的log,可以双击定位到代码
- ubuntu 12.04 install gcc 4.8
http://askubuntu.com/questions/271388/how-to-install-gcc-4-8-in-ubuntu-12-04-from-the-terminal sudo ...
- 图像视频编码和FFmpeg(2)-----YUV格式介绍和应用
本文不讲FFmpeg,而是讲YUV图像格式.因为摄像头拍摄出来的原始图像一般都是YUV格式.在FFmpeg中,视频是通过多张YUV图像而得到. YUV图像格式是什么,这个可以看一下维基百科.这个超链接 ...
- jquery插件实现分页
Query Pagination分页插件 原项目地址:http://plugins.jquery.com/project/pagination 版本:v1.2 源文件下载:英文原版 或 中文翻译修改版 ...