10分钟学会JAVA注解(annotation)
(原)
先认识注解(Annotation)
定义类用class,定义接口用interface,定义注解用@interface
如public @interface AnnotationTest{}
所有的注解类型都自动的继承于java.lang.annotation.Annotation接口

Annotation接口文档中这样描述:所有注解类型都扩展于这个公共的接口,注意,一个接口,
手动的继承了这个接口,并不意味着它是一个注解类型。换句话说,这个接口本身不是一个注解类型。
注意:这里Annotation是个接口,不是注解,注解是不能继承的
@Retention:保留注解

里面有一个RetentionPolicy保留策略的枚举属性

这里有三个值:
SOURCE:注解会被编译器丢弃,不会被编译到.class文件中
CLASS:在编译时,注解会被保留在.class编译文件中,但是不会被虚拟机读取,这是一个预设值。
RUNTIME:注解会被保留在.class编译文件中,并且可以被虚似机在运行时获取到,所以他们能以反射的方式读取。
例如:平常编译代码时,用来压制IDE警告的注解@SuppressWarnings和
重写的注解@Override


被注解为SOURCE,这二个注解只会在编译期运行,不会被编译进.class文件
如果注解需要用到反射,那么必需了解AnnotatedElement

(以上实现是1.6版本的JDK,1.8版本已经改了,添加了几个,这里就不列出来了。)
注意:如果需要用到反射,一定要定义@Retention的值为RUNTIME,因为他的默认值是CLSS。
下面一个例子来认识注解怎么用,注解写的很清楚了,就不多说了。
这里定义了一个注解@AnnotationTest


下面介绍另一个重要的注解
@Target

与@Retention一样,也有一个枚举类型的属性

这里值有很多,比如METHOD,这个值只能修饰方法,FIELD,这个值只能修饰属性等
比如说我将刚才自己写的注解加上@Target({ElementType.FIELD})

那么刚才的这个地方就会报错

提示我这个注解不允许放在这个地方。
JAVA注解有很多,实际开发中很少会自己去写,都是用的第三方或是框架的,只要知道其基本原理,其实这些东西都很简单。
10分钟学会JAVA注解(annotation)的更多相关文章
- 10分钟学会搭建Android开发环境 Eclipse: The import android.support cannot be resolved
10分钟学会搭建Android开发环境_隋雨辰 http://v.youku.com/v_show/id_XNTE2OTI5Njg0.html?from=s1.8-1-1.2 The import a ...
- Java注解Annotation与自定义注解详解
Java注解简介 开发中经常使用到注解,在项目中也偶尔会见到过自定义注解,今天就来探讨一下这个注解是什么鬼,以及注解的应用场景和如何自定义注解. 下面列举开发中常见的注解 @Override:用于标识 ...
- Java - 注解 (Annotation)
Java - 注解 (Annotation) 一.基本的 Annotation > 使用 Annotation 时要在其前面增加 @符号,并把该 Annotation 当成一个修饰符 ...
- 10分钟学会Linux
10分钟学会Linux有点夸张,可是能够让一个新手初步熟悉Linux中最重要最主要的知识,本文翻译的英文网页在众多Linux入门学习的资料中还是很不错的. 英文地址:http://freeengine ...
- Java注解Annotation(一)
Java注解Annotation(一)——简介 这一章首先简单介绍一下注解,下一章会给出一个注解应用的DEMO. 1. 元注解 元注解的作用是负责注解其他的注解. JDK1.5中,定义了4个标准的me ...
- Java注解(Annotation)详解
转: Java注解(Annotation)详解 幻海流心 2018.05.23 15:20 字数 1775 阅读 380评论 0喜欢 1 Java注解(Annotation)详解 1.Annotati ...
- 【小白视频学Java for循环】3分钟学会Java的for循环,让看懂for循环嵌套再不是难事
目录 一.单个for循环介绍 二.for循环嵌套 听讲时能听懂的for循环为什么一做题就晕菜?一个for循环还勉强能看懂,但为什么一看到双重for循环脑子里就感觉脑子全是浆糊? 如果有上述问题那么就继 ...
- 深入JAVA注解-Annotation(学习过程)
JAVA注解-Annotation学习 本文目的:项目开发过程中遇到自定义注解,想要弄清楚其原理,但是自己的基础知识不足以支撑自己去探索此问题,所以先记录问题,然后补充基础知识,然后解决其问题.记录此 ...
- 深入学习JAVA注解-Annotation(学习过程)
JAVA注解-Annotation学习 本文目的:项目开发过程中遇到自定义注解,想要弄清楚其原理,但是自己的基础知识不足以支撑自己去探索此问题,所以先记录问题,然后补充基础知识,然后解决其问题.记录此 ...
随机推荐
- Coordinator节点
Coordinator节点 Coordinator 节点主要负责segment 的管理和分配.更具体的说,它同通过配置往historical 节点 load 或者 drop segment .Coo ...
- 【转载】c语言数据的左移右移
原文地址:http://www.cnblogs.com/myblesh/articles/2431806.html 由于在飞控程序中执行效率对程序的影响相当大,所以一个好的运算效率很重要.左移右移比单 ...
- stm32中断学习总结
经过了两天,终于差不多能看懂32的中断了,由于是用的库函数操作的,所以有些内部知识并没有求甚解,只是理解知道是这样的.但对于要做简单开发的我来说这些已经够了. 我学习喜欢从一个例程来看,下面的程序是我 ...
- 动画制作 手机APP制作以及响应式的实现
babber 宽度:浏览器的100% 原则上:高度-=图片高度 banner img 宽度:图片的实际宽度 高度:充满父容器 使用定位:让图片在父容器中绝对居中. <!DOCTYPE h ...
- Swift try try! try?使用和区别
Swift try try! try?使用和区别 一.异常处理try catch的使用 1. swift异常处理 历史由来 Swift1.0版本 Cocoa Touch 的 NSError ,Swif ...
- ArrayList 如何完美去除空值
package sourceCode.ArrayList; import java.util.ArrayList; import java.util.List; public class arrayL ...
- Struts2框架的基本使用(二)
上一篇 Struts2框架的基本使用 我们限于篇幅,最后简单介绍了Action的配置问题,本篇接着介绍有关框架的一些其他基本用法,主要内容如下: Action的基本配置 result的基本配置 Str ...
- fileInput实战总结
fileinput组件实战总结 fileinput是一个增强的基于Bootstrap3.x和HTML5的文件上传工具,具备多种格式文件的预览功能, 另外,它包含了基于AJAX的上传,拖拽和撤销文件,可 ...
- CAShapeLayer+CADisplayLink 波浪动画
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #1e9421 } p.p2 { margin: 0.0px 0. ...
- 分别用css3、JS实现图片简单的无缝轮播功效
本文主要介绍分别使用CSS3.JS实现图片简单无缝轮播功效: 一.使用CSS3实现:利用animation属性 (实现一张一张的轮播,肉眼只看见一张图片) HTML部分比较简单,两个div下包着几个i ...