注解类似于注释,但不同于注释的是,注解不是单纯的对代码功能的说明,而是实现程序功能的组成部分。一个注解就是一个类,每次使用一次注解就是创建一个相应的实例对象。在开发Java EE应用时,总是需要导入各种配置文件,这些配置文件需要与Java源代码保持同步,否则在运行时就会出错,使用注解则可以只在一个地方管理和维护信息,其他部分所需信息均自动生成。

Java内置的标准注解

  • @Override,表示当前的方法定义将覆盖超类中的方法。
  • @SuppressWarnings,关闭不当编译器警告信息。
  • @Deprecated,编译器将对注解为@Deprecated的元素发出警告,注解@Deprecated是不赞成使用的、被弃用的代码。

以上三者我们在平时编写和阅读代码时都会遇到,其中以前两者更为常见。

加了注解就相当于为程序加了某种标记,开发工具和其他程序可以用反射来了解你的类和各种元素上有无何种标记,若你有什么标记,就去干相应的事。标记可以在包,类,字段,方法,方法的参数以及局部变量上。

元注解

元注解就是在注解类上加的注解

@Retention

表示需要在什么级别保存该注解信息

注解的生命周期: java源文件 ——> class文件 ——> 字节码阶段

@Retention元注解有三种取值(参考Java API枚举类java.lang.annotation.RetentionPolicy):

 RetentionPolicy.SOURCE //只存在于java源文件中,会被编译器丢弃RetentionPolicy.CLASS//保留到class文件中,但会被jvm丢弃RetentionPolicy.RUNTIME//一直保留到jvm在运行期间,可以通过反射机制获取注解的信息

某一注解对于@Retention的具体取值应视该注解的实际情况而定 举例:

  • @Override应保留到SOURCE阶段
  • @SupperessWarnings保留到RUNTIME阶段
  • @Deprecated保留到RUNTIME阶段

@Target

表示该注解可以用于什么地方 @Target元注解的取值有(参考Java API枚举类java.lang.annotation.ElementType):

ElementType.CONSTRUCTOR//构造器的声明
ElementType.FIELD//域声明(包括enum实例)
ElementType.LOCAL_VARIABLE//局部变量声明
ElementType.METHOD//方法声明
ElementType.PACKAGE//包声明
ElementType.PARAMETER//参数声明
ElementType.TYPE//类、接口(包括注解类型)或enum声明

@Documented

@Documented是一个标记注解,没有成员。该元注解用于将其他注解包含在Javadoc中,从而被文档化。

@Inherited

@Inherited元注解也是一个标记注解,被该注解标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。

自定义注解

用关键字@interface 定义一个注解标记,使用@interface 关键字实际上的意思就是该接口继承自java.lang.annotation.Annotation接口。

定义注解格式:

public @interface 注解名 {定义体}

注意:

  • 注解方法不能有参数。
  • 注解的值必须是确定的,且不能使用null作为值。
  • 注解方法的返回类型局限于原始类型,String,Enum,Annotation,或以上类型构成的数组。
  • 注解方法可以包含默认值,使用default就可实现。
  • 注解只有一个元素的时候,该元素名称必须是value,并且在使用该注解的时候可以省略”value=”。
  • 注解可以包含与其绑定的元注解。

自定义注解实例:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Assignment {String assignee();int effort();double finished() default 0;
}

Java基础学习(2)-注解相关推荐

  1. Java基础学习——第十章 枚举类注解

    Java基础学习--第十章 枚举类&注解 一.枚举类(enum) 1. 枚举类的概念 枚举类:类的对象只有有限个,确定的 线程状态:创建.就绪.运行.阻塞.死亡 当需要定义一组常量时,强烈建议 ...

  2. java基础知识之注解、反射(一)

    前言 此博客为供个人学习总结备用,如有错误请指正. 正文 Annotation(注解) java自带的注解包含以下三个: 1.@Override 注解表示重写父类的方法 2.@Deprecated 声 ...

  3. java基础学习-4

    Java基础学习-4 static 注意事项 重新认识main方法 继承 小练习 子类到底能继承父类中的哪些内容(第126集)*** 继承过程中成员变量和成员方法的访问特点 小练习 小总结 构造方法的 ...

  4. Java基础学习——第十六章 Java8新特性

    Java基础学习--第十六章 Java8 新特性 Java8(JDK8.0)较 JDK7.0 有很多变化或者说是优化,比如 interface 里可以有静态方法和默认方法,并且可以有方法体,这一点就颠 ...

  5. java基础学习整理(一)

    java基础学习整理(一) lesson1: D0s命令: 1.回到根目录,>cd \ 2.复制命令行下的内容,右击标记所要复制的内容,这样就已经复制好了,右击粘贴就可以了. 3.查看,设置环境 ...

  6. 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结

    Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 4.1 class作为成员变量 4.2 interface作为成 ...

  7. Java中大数据数组,Java基础学习笔记之数组详解

    摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...

  8. Java基础教程:注解

    Java基础教程:注解 本篇文章参考的相关资料链接: 维基百科:https://zh.wikipedia.org/wiki/Java%E6%B3%A8%E8%A7%A3 注解基础与高级应用:http: ...

  9. java基础学安卓开发_Android开发学习路线之Java基础学习

    原标题:Android开发学习路线之Java基础学习 很多Android学习开发者刚入手Android开发技术时,稍微有点迫切.任何的开发技术都有其基础语言,Android应用程序开发是以Java语言 ...

  10. Java基础学习:尚硅谷项目三 开发团队调度软件

    Java基础学习:尚硅谷项目三 开发团队调度软件 一.软件功能与结构设计 1. 软件功能 该软件实现以下功能: 软件启动时,根据给定的数据创建公司部分成员列表(数组) 根据菜单提示,基于现有的公司成员 ...

最新文章

  1. 一篇关于java变量定义的文章
  2. python编程案例教程书籍-清华大学出版社-图书详情-《Python案例教程》
  3. oracle管理员是sys吗,Oracle管理员sys,system登录无权限的坑
  4. 五十八、深入了解 Java 中的注解和自定义注解
  5. 同步器之Exchanger
  6. 墨天轮社区专属福利:与作者互动问答,民工哥全新力作《Linux系统运维指南:从入门到企业实战》送上!...
  7. 前端下载图片(文件)以及打包下载图片(文件)
  8. 两向量叉乘的计算公式_高中数学知识背景下对向量叉乘运算的探讨(向东来)
  9. 微信小程序单页开发之 min-cli
  10. 软件测试工程师岗位个人简历怎么写
  11. 事件监听机制(一)Java事件监听
  12. 【STM32F4系列】【HAL库】旋转编码器(EC11)
  13. 我们距离真正的移动办公,还有多远
  14. 阿里推崇的大中台、小前台,什么是中台,什么是平台,有什么区别
  15. 用Javascript开发《三国志曹操传》-开源讲座(一)-让静态人物动起来
  16. Echarts实战案例代码(5):liquidFill水球组件利用svg path定制你自己的个性化图标动态图
  17. Pytorch/Python中item()的用法
  18. 海康网络摄像头二次开发
  19. oracle查询多表连接语句怎么写,Oracle join多表查询
  20. EDIUS是怎么制作倒影

热门文章

  1. 9. PHP 字符串
  2. 5. 在Windows上安装Git
  3. 深度理解__proto__ 和 prototype
  4. java 基础 1 final关键字
  5. GPIO的翻转操作方法
  6. swift 3.0 协议笔记
  7. HTTP请求报文格式
  8. Object-C日志记录
  9. 下拉框绑定数据库后,如何在下拉框的最前面增加一项
  10. Cesium中HeadingPitchRoll