(原)

先认识注解(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. 本地yum服务搭建

    1.准备linux ISO系统镜像文件 (例如:rhel-server-5.5-i386-dvd.iso) 2.linux虚拟机(centos 7  192.168.50.24 ),启动sshd服务 ...

  2. vue.js随笔记---初识Vue.js

    1.基础要求: 1.1 HTML CSS JAVASCRIPT 1.2 模块化基础 1.3 Es6初步了解 2.vue.js 轻量级的MVVM模式框架,他同时吸收了recat和angular的优点,他 ...

  3. Angularjs快速入门(四)-css类和样式

    例子: .error{background-color:red;} .warning{background-color:yellow;} <div ng-controller='HeaderCo ...

  4. uoj#73 【WC2015】未来程序

    在 2047 年,第 64 届全国青少年信息学奥林匹克冬令营前夕,B君找到了 2015 年,第 32 届冬令营的题目来练习. 他打开了第三题 “未来程序” 这道题目: 本题是一道提交答案题,一共 10 ...

  5. log4j的Appenders配置

    因为是刚开始使用log4j,很多配置方面的东西都不懂,记录下. 下面是我用STS(Spring Tool Suite)新建Spring MVC项目的时候,帮我自动生成的一个log4j.xml配置文件. ...

  6. 详解Java反射机制

    反射是程序在运行状态下,动态的获取某个类的内部信息的一种操作.例如:类名,包名,所有属性的集合,所有方法的集合,构造方法的集合等.该操作发生在程序的运行时状态,所以编译器管不着有关反射的一些代码,通常 ...

  7. Transform java future into completable future 【将 future 转成 completable future】

    Future is introduced in JDK 1.5 by Doug Lea to represent "the result of an asynchronous computa ...

  8. 关于[JAVA] Apache FTPClient.listFiles()操作“卡死”问题的分析和解决

    项目中使用commons-net-3.0.1.jar实现FTP文件的下载,程序运行到 FTPClient.listFiles()或者FTPClient.retrieveFile()方法时,就停止在那里 ...

  9. java文件创建和删除

    流的操作在项目开发中用的很普遍,虽然每次在网上都可以百度到,但是总感觉心里不踏实,对此,关于流的操作做一个详细的总结--- 1.根据数据的流向来分:输出流:是用来写数据的,是由程序(内存)---> ...

  10. 【WPF】获取电磁笔的压感

    WPF 不仅支持触控,也支持笔的输入,比如现在比较高大上的电磁笔.便宜的板子一般不配备电磁笔,而是配电容笔,虽然也号称XXX级压感,但是效果自然不可与电磁笔相比. UIElement 类规范了UI元素 ...