a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 79|回复: 0

[其他] JAVA技巧:Java注释的使用和定义

[复制链接]
发表于 2012-8-4 12:28:23 | 显示全部楼层 |阅读模式
元数据年夜metadata一词译来,就是“关于数据的数据”的意思。越来越的开源框架都供给了“元数据”撑持了,其实也就是注释撑持。今天系统进修一下Java注释(Java元数据)。本文内容不限于Javadoc的注释。
8 ]& R0 O! E: d) t: E  1.什么是Java元数据,有什么浸染?  x; u' o! B: U! h  a+ [2 ~
  元数据,就是“关于数据的数据”。功能也有良多啦。你可能用过Javadoc的注释自动生成文档。这就是元数据功能的一种。总的来说,元数据可以用来建树文档,跟踪代码的依靠性,执行编译时名目搜检,庖代已有的设置装备摆设文件(如Hibernate也供给了注释设置装备摆设)- \9 J' W0 N. A  K8 @2 n
  注释有3中根基类型- S4 O  B; N: ]. I
  a.标识表记标帜注释 --没有变量,只有名称标识。例如 @annotation
/ ]( S9 [7 o7 T0 x2 M6 J8 u1 N; A  b.单一值注释 --在标识表记标帜注释的基本上供给一段数据。如 @annotation(“data”)
" l* E& F. @* [$ t9 V: k  c.完整注释 --可以搜罗多个数据成员,每个数据成员由名称和值组成。
. v; s  D" Y. g; b1 E" g- D* X  @annotation(val1="data1",val2="data2")
" Y( [0 }1 L9 q1 S3 G, U, |' y- \) q  2.Java的“注释”
, S0 \! n2 j+ ^0 |* O9 l  Java中供给3个内置注释类型
) y$ i: B: b% V8 k/ P  a. Override ,只能用于体例(不能用于类,包声明或者其他机关)
& d6 t+ I# v7 K0 C$ T) G1 z5 ?% j  浸染:可以保证编译时辰Override函数的声明正确性: Z( o2 W; R- O% P, q' H
  用法:@Override
2 n5 s3 W4 V6 n/ ~1 O$ t  public void fun(){..}+ j* L2 y( p* Q3 O
  b.Deprecated 同样只能浸染与体例% h0 ?9 T4 x) T7 w6 I
  浸染:对不应再使用的体例进行注解
& M% t+ ]7 }  X4 A0 |1 ~  用法:@Deprecated public void fun{...} //它们嗣魅这个注释跟函数要统一行
. _9 `+ H2 X" s* Z& N  c.SupressWarnings 可以注释一段代码
5 d! @1 k; }1 Q+ F  V4 M  浸染:封锁特定的警告信息,例如你在使用泛型的时辰未指定类型5 a8 a5 Z5 [& \# K. }  J
  用法: @SupressWarnings(value=http://www.qnr.cn/pc/java/fudao/jichu/200911/{"unchecked"})) q3 ~& I7 [; q
  ..代码% N  D  W# _, u9 `
  Java中还供给了四种元注释,专门负责注释其他的注释5 E) F- h% {* \/ @
  @Target 暗示该注释可以用于什么处所。可用的ElementType参数搜罗:3 u! Y2 `  ]* u& G, \  r, `
  CONSTRUCTOR : 机关器的声明' X  `8 N( ]/ _7 T) `
  FIELD : 域声明(搜罗enum实例)
3 C* ~. K  f0 @  o+ }7 y  LOCAL_VARIABLE : 局部变量声明
+ W% V. C; H  J0 O+ \3 a: d3 l: C  METHOD : 体例声明
3 P% [! K) Z5 C6 A6 n  PACKAGE : 包声明
5 m( ]4 F% R" U9 j8 s  PARAMETER : 参数声明
2 d2 t& M: U$ H. M$ \* ]  w% r3 w+ g  TYPE : 类、接口 (搜罗注解类型) 或enum声明
( `2 o; |# ?$ p  @Retention 暗示需要在什么级别保留该注释信息。可选的RetentionPoicy参数搜罗:# t# [3 W! r+ g* M* N" p
  SOURCE : 注释将被编译器丢失踪/ p* a  m- R+ }" w
  CLASS : 注释在class文件中可用,但会被VM丢弃
2 d- z: h( ^  y9 y4 T  RUNTIME : VM将在运行时也保留注释,是以可以经由过程反射机制篡夺注释的信息。' E  X( _: x' ?, f
  @Documented 将注释包含在JavaDoc中
; |; k* r. `+ l- ^. d  @Inheried 许可子类担任父类中的注释。( q( @( D" d; }' P: z' ^
  3. 在Java中界说自己的注释' S( j  _6 W# q% c3 `
  Java说话撑持一种新的类型——注释类型(annotation type),跟通俗类差不多,在类中以符号( @ )的形式注释其他 Java 代码& E0 m1 s/ Q5 E) e
  下面将经由过程一个简单的例子来实现(代码是Brett McLaughlin 的)1 m( u; E( f' s  e& b+ H2 s
  @interface 声名
+ D5 f1 N6 {! {0 f% m  u  i.简单的注释类型! z, O5 N: {1 b! L' Y: \1 r, [% X/ a
  package com.oreilly.tiger.ch06; /** * Marker annotation to indicate that a method or class * is still in progress. */ public @interface InProgress { }
" C' T/ _( `! e: g/ ?8 s8 \  ii.使用定制的注释类型
- r& T! ^4 V" a' Z  @com.oreilly.tiger.ch06.InProgress public void calculateInterest(float amout,float rate) { //Need to finish this method later }3 F1 p7 @0 s1 J: V+ q  `: {6 m
  iii.添加成员. Q; b0 s, |7 H# O# P. ]8 N% ^
  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="http://www.qnr.cn/pc/java/fudao/jichu/200911/Figure out the amount of interest per month") public void calculateInterest(float amount,float rate) { }
, d  M2 `& s* U4 s2 `, \$ v+ @2 K  iv.设置默认值' b7 |7 u% v: R: @8 v
  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(); } }
# U4 `. V7 K( q1 t3 e  v.使用默认值
! Q9 \8 \* {: Z$ ?  @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 }
. Q+ T3 _3 m/ h) D2 F' n0 S  vi.改写默认值  p- t9 b, M" F- w: O9 d
  @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" }
8 B. j- [# u# T, u% \. p  这样就对Java元数据/Java注释进行了总结。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-21 13:13 , Processed in 0.192026 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表