元数据从metadata一词译来,就是“关于数据的数据”的意思。越来越的开源框架都提供了“元数据”支持了,其实也就是注释支持。今天系统学习一下Java注释(Java元数据)。本文内容不限于Javadoc的注释。

1.什么是Java元数据,有什么作用?  元数据,就是“关于数据的数据”。功能也有很多啦。你可能用过Javadoc的注释自动生成文档。这就是元数据功能的一种。总的来说,元数据可以用来创建文档,跟踪代码的依赖性,执行编译时格式检查,代替已有的配置文件(如Hibernate也提供了注释配置)

注释有3中基本类型

a.标记注释 --没有变量,只有名称标识。例如 @annotation

b.单一值注释 --在标记注释的基础上提供一段数据。如 @annotation(“data”)

c.完整注释 --可以包括多个数据成员,每个数据成员由名称和值构成。

@annotation(val1="data1",val2="data2")

2.Java的“注释”  Java中提供3个内置注释类型

a. Override ,只能用于方法(不能用于类,包声明或者其他构造)

作用:可以保证编译时候Override函数的声明正确性

用法:@Override

public void fun(){..}

b.Deprecated 同样只能作用与方法

作用:对不应再使用的方法进行注解

用法:@Deprecated public void fun{...} //它们说这个注释跟函数要同一行

c.SupressWarnings 可以注释一段代码

作用:关闭特定的警告信息,例如你在使用泛型的时候未指定类型

用法: @SupressWarnings(value={"unchecked"})

..代码

Java中还提供了四种元注释,专门负责注释其他的注释

@Target 表示该注释可以用于什么地方。可用的ElementType参数包括:

CONSTRUCTOR : 构造器的声明

FIELD : 域声明(包括enum实例)

LOCAL_VARIABLE : 局部变量声明

METHOD : 方法声明

PACKAGE : 包声明

PARAMETER : 参数声明

TYPE : 类、接口 (包括注解类型) 或enum声明

@Retention 表示需要在什么级别保存该注释信息。可选的RetentionPoicy参数包括:

SOURCE : 注释将被编译器丢掉

CLASS : 注释在class文件中可用,但会被VM丢弃

RUNTIME : VM将在运行时也保留注释,因此可以通过反射机制读取注释的信息。

@Documented 将注释包含在JavaDoc中

@Inheried 允许子类继承父类中的注释。

3. 在Java中定义自己的注释  Java语言支持一种新的类型——注释类型(annotation type),跟普通类差不多,在类中以符号( @ )的形式注释其他 Java 代码

下面将通过一个简单的例子来实现(代码是Brett McLaughlin 的)

@interface 申明

i.简单的注释类型

package com.oreilly.tiger.ch06; /** * Marker annotation to indicate that a method or class * is still in progress. */ public @interface InProgress { }

ii.使用定制的注释类型

@com.oreilly.tiger.ch06.InProgress public void calculateInterest(float amout,float rate) { //Need to finish this method later }

iii.添加成员

package com.oreilly.tiger.ch06; /** * Marker annotation to indicate that a method or class * is still in progress. */ public @interface InProgress { String value(); } @com.oreilly.tiger.ch06.InProgress @TODO("Figure out the amount of interest per month") //或者@TODO(value="Figure out the amount of interest per month") public void calculateInterest(float amount,float rate) { }

iv.设置默认值

package com.oreilly.tiger.ch06; public @interface GroupTODO { public enum Serverity { CRITICAL,IMPORTANT,IRIVIAL,DOCMENTATION }; Severity severity() default Severity.IMPORTANT; String item (); String assignedTo(); String dateAssigned(); } }

v.使用默认值

@com.oreilly.tiger.ch06.InProgress @GroupTODO( item="Figure out the amount of interest per month", assignedTo = "Brett McLaughlin", dateAssigned = "08/04/2004" ) public void calculateInterest(float amount, float rate) { //Need to finish this method later }

vi.改写默认值

@com.oreilly.tiger.ch06.InProgress @GroupTODO { severity = GroupTODO.Severity.DOCUMENTATION, item = "Need to explain how this rather unusal method works", assignedTo = "Jon Stevens", dateAssigned = "07/30/2004" }

这样就对Java元数据/Java注释进行了总结。

java 元数据 注解_Java元数据总结:Java注释的使用和定义相关推荐

  1. java 多重注解_Java注解-元数据、注解分类、内置注解和自定义注解

    大家好,我是乐字节的小乐,上次说过了Java多态的6大特性|乐字节,接下来我们来看看Java编程里的注解. Java注解有以下几个知识点:元数据 注解的分类 内置注解 自定义注解 注解处理器 Serv ...

  2. java 元数据 注解_Java:注解(元数据)

    初识Java注解 所谓的元数据是指用来描述数据的数据,可能刚听到元数据的时候你会有点陌生,其实任何一个使用过struts或者hibernate的开发人员都在不知不觉中使用元数据,更通俗一点来说元数据是 ...

  3. java 自定义注解_Java注解

    前言 近日在阅读开源项目,发现项目里好多奇奇怪怪的注解(@DataScope.@Log...)看得我一脸懵,不知道大家是否也有过这样的经历,回想了一下,发现自己对于注解的知识,好像只停留在@Overr ...

  4. java path 注解_Java内置系统注解和元注解

    第一节:注解(Annotation)的作用 Annotation(注解)是JDK5.0及以后版本引入的.它的作用是修饰程序元素.什么是程序元素呢?例如:包.类.构造方法.方法.成员变量等. 注解,就是 ...

  5. java threadsafe 注解_Java 注解详解

    什么是注解 Annotation 中文译过来就是注解.标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有点让新手不容易理解.而新手很难理解的主要原因是一些技术文档里的专业术语和名词不太 ...

  6. java 枚举 注解_Java枚举类和注解梳理

    1. 枚举类 1. 枚举类的使用 枚举类的理解:类的对象只有有限个,确定的.我们称此类为枚举类. 当需要定义一组常量时,强烈建议使用枚举类. 如果枚举类中只有一个对象,则可以作为单例模式的实现方式. ...

  7. java反射 注解_Java反射中的注解

    "注解"这个词,可谓是在Java编程中出镜率比较高,而且也是一个老生常谈的话题.我们之前在聊Spring相关的东西时,注解是无处不在,之前我们简单的聊过一些"注解&quo ...

  8. java 解析注解_Java知识点总结(注解-解析注解)

    Java知识点总结(注解-解析注解) @(Java知识点总结)[Java, 注解] 通过反射获取类.函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑. 使用注解步骤: 定义注解 类中使用注 ...

  9. java 挥发注解_Java的挥发性修饰符

    java 挥发注解 不久前,我写了一个Java servlet过滤器,该过滤器在其init函数中加载配置(基于web.xml的参数). 筛选器的配置缓存在私有字段中. 我在字段上设置了volatile ...

最新文章

  1. 【matlab】第三章数组和数组的运算
  2. matlab最小二乘法参数辨识,基于最小二乘法的MATLAB辨识仿真实验
  3. jmeter执行python脚本,Jmeter+Python-1问题记录jmeter执行Python3的脚本时报 ValueErro
  4. c语言文件加密异或操作,用异或算法实现文件的简单加密
  5. ubuntu无线网络开关
  6. java bean 对象属性复制框架BeanMapping-release_0.0.2-注解支持
  7. python小车行驶路线图_基于opencv-Python小车循线学习笔记
  8. Shell离线脚本安装mysql、更新密码
  9. 语言认知偏差_认知语言学可以教给开发人员什么
  10. 网络信息如此庞杂,人工智能助你验明真伪
  11. 【索引】联合索引的基本知识
  12. python中如何判断输入的是否是数字_python如何判断输入是不是数字
  13. servlet执行流程代码分析
  14. redis报错MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist
  15. 462.最少移动次数使数组元素相等II
  16. 使用花生壳6.5客户端FTP设置
  17. [全国十大城市火车票售票点、订票电话(买票再也不用去火车站排队)] – [旅游] – [校内论坛]
  18. DTOJ3026 geronimo
  19. 笔记本电脑计算机里面怎么管理,笔记本电脑如何分区,详细教您笔记本电脑怎么分区...
  20. 在 Linux 上使用 VirtualBox 的命令行管理界面

热门文章

  1. Log4J日志配置详解3
  2. 05、查找【应用篇】
  3. Linux驱动之分层框架
  4. Ubuntu 安装 中文输入法(Google 拼音)
  5. android 几个快速编译images指令
  6. 零基础编译ffmpeg到wasm
  7. web多线程之webworkers
  8. netcore 之docker
  9. Java特点是支持引用类型_Java四种引用类型:强、软、弱、虚
  10. 写python代码案例_keras topN显示,自编写代码案例