(原)

先认识注解(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)的更多相关文章

  1. 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 ...

  2. Java注解Annotation与自定义注解详解

    Java注解简介 开发中经常使用到注解,在项目中也偶尔会见到过自定义注解,今天就来探讨一下这个注解是什么鬼,以及注解的应用场景和如何自定义注解. 下面列举开发中常见的注解 @Override:用于标识 ...

  3. Java - 注解 (Annotation)

    Java - 注解 (Annotation)   一.基本的 Annotation     > 使用 Annotation 时要在其前面增加 @符号,并把该 Annotation 当成一个修饰符 ...

  4. 10分钟学会Linux

    10分钟学会Linux有点夸张,可是能够让一个新手初步熟悉Linux中最重要最主要的知识,本文翻译的英文网页在众多Linux入门学习的资料中还是很不错的. 英文地址:http://freeengine ...

  5. Java注解Annotation(一)

    Java注解Annotation(一)——简介 这一章首先简单介绍一下注解,下一章会给出一个注解应用的DEMO. 1. 元注解 元注解的作用是负责注解其他的注解. JDK1.5中,定义了4个标准的me ...

  6. Java注解(Annotation)详解

    转: Java注解(Annotation)详解 幻海流心 2018.05.23 15:20 字数 1775 阅读 380评论 0喜欢 1 Java注解(Annotation)详解 1.Annotati ...

  7. 【小白视频学Java for循环】3分钟学会Java的for循环,让看懂for循环嵌套再不是难事

    目录 一.单个for循环介绍 二.for循环嵌套 听讲时能听懂的for循环为什么一做题就晕菜?一个for循环还勉强能看懂,但为什么一看到双重for循环脑子里就感觉脑子全是浆糊? 如果有上述问题那么就继 ...

  8. 深入JAVA注解-Annotation(学习过程)

    JAVA注解-Annotation学习 本文目的:项目开发过程中遇到自定义注解,想要弄清楚其原理,但是自己的基础知识不足以支撑自己去探索此问题,所以先记录问题,然后补充基础知识,然后解决其问题.记录此 ...

  9. 深入学习JAVA注解-Annotation(学习过程)

    JAVA注解-Annotation学习 本文目的:项目开发过程中遇到自定义注解,想要弄清楚其原理,但是自己的基础知识不足以支撑自己去探索此问题,所以先记录问题,然后补充基础知识,然后解决其问题.记录此 ...

随机推荐

  1. JS为网页添加文字水印【原创】

    最近需要实现为网页添加水印的功能,由于水印的信息是动态生成的,而百度谷歌上的方法往往都是为网页添加图片水印或为图片添加水印,而为网页添加文字水印相关资料较少,于是就自己动手写了这个代码. 通常加动态水 ...

  2. Azure WAF防火墙工作原理分析和配置向导

    Azure WAF工作原理分析和配置向导 本文博客地址为:http://www.cnblogs.com/taosha/p/6716434.html ,转载请保留出处,多谢! 本地数据中心往云端迁移的的 ...

  3. phpcms课堂笔记

    获取父分类下面的子分类 {loop subcat(77) $k $v}{php $subcatid[] = $k;}{/loop}<?php $subcatid = implode(',', $ ...

  4. Unity 类似FingerGestures 的相机跟随功能

    本文原创,转载请注明出处:http://www.cnblogs.com/AdvancePikachu/p/6555188.html 最近在做一款VR项目,有一个查看功能,分为自由查看和跟随查看. 自由 ...

  5. html 初始化

    //  html 初始化 <!DOCTYPE html><html lang="en"><head> <meta charset=&quo ...

  6. 【转】JDBC学习笔记(6)——获取自动生成的主键值&处理Blob&数据库事务处理

    转自:http://www.cnblogs.com/ysw-go/ 获取数据库自动生成的主键 我们这里只是为了了解具体的实现步骤:我们在插入数据的时候,经常会需要获取我们插入的这一行数据对应的主键值. ...

  7. Javascript的内容

    JS简介和变量 {JS的三种方式}            1 HTML中内嵌JS(不提倡使用)            <button onclick="javascript:alert ...

  8. css过渡模块和2d转换模块

    今天,我们一起来研究一下css3中的过渡模块.2d转换模块和3d转换模块 一.过渡模块transition (一)过度模块的三要素: 1.必须要有属性发生变化 2.必须告诉系统哪个属性需要执行过渡效果 ...

  9. Activiti引擎启动失败

    今天部署项目测试时发现activiti启动失败,研究了会才把问题解决!! 错误信息:SEVERE: problem during schema create, statement create seq ...

  10. [Splay模版1]

    输入 第1行:1个正整数n,表示操作数量,100≤n≤200,000 第2..n+1行:可能包含下面3种规则: 1个字母'I',紧接着1个数字k,表示插入一个数字k到树中,1≤k≤1,000,000, ...