zoukankan      html  css  js  c++  java
  • Java元数据总结:Java注释的使用和定义

    元数据从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注释进行了总结。
  • 相关阅读:
    火狐插件火狐黑客插件将Firefox变成黑客工具的七个插件
    memcache安装环境:WINDOWS 7
    PHP正则表达式
    968. 监控二叉树 力扣(困难) dfs 官方说DP
    375. 猜数字大小 II 力扣(中等) 区间动态规划、记忆化搜索
    629. K个逆序对数组 力扣(困难) 区间动态规划
    剑指 Offer 51. 数组中的逆序对 力扣(困难) 巧用归并排序算法
    488. 祖玛游戏 力扣(困难) dfs
    16. 最接近的三数之和 力扣(中等) 双指针
    319. 灯泡开关 力扣(中等) 数论
  • 原文地址:https://www.cnblogs.com/jacktu/p/1790209.html
Copyright © 2011-2022 走看看