Tiger中的注释,第1部份: 向Java代码中增添元数据[Java编程]
本文“Tiger中的注释,第1部份: 向Java代码中增添元数据[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
编程的一个最新的趋向,特别是在 Java 编程方面,是利用 元数据.简单地说,元数据就是 关于数据的数据.元数据可以用于成立文档,跟踪代码中的依靠性,乃至履行基本编译时查抄.很多元数据工具,如 XDoclet(请参阅 参考资料),将这些功效增添到核心 Java 语言中,暂时成为 Java 编程功效的一部份.
直到可以利用 J2SE 5.0(也叫做 Tiger,目前是第二个 beta 版本),核心 Java 语言才最接近具有 Javadoc 办法的元数据工具.您利用特别的标签调集来标志代码,并履行 javadoc 号令来将这些标签转化成格局化的 HTML 页面,该页面阐明标签所附加到的类.但是,Javadoc 是有缺陷的元数据工具,因为除了生成文档之外,您没有固定、实用、尺度化的方法来将数据用于其他用处.HTML 代码常常混入到 Javadoc 输出中这一事实乃至更进一步降低了其用于任何其他目的的代价.
Tiger 通过名为 注释的新功效将一个更通用的元数据工具归并到核心 Java 语言中.注释是可以增添到代码中的修饰符,可以用于包声明、范例声明、构造函数、办法、字段、参数和变量.Tiger 包含内置注释,还支持您自己编写的定制注释.本文将概述元数据的长处并向您介绍 Tiger 的内置注释.本系列文章的 第 2 部份将研究定制注释.我要感激 O'Reilly Media, Inc.,他们非常大方地 答应我在本文中利用我关于 Tiger 的书籍的“注释”一章中的代码示例(请参阅 参考资料).
元数据的代价
普通来说,元数据的好处罚为三类:文档编制、编译器查抄和代码解析.代码级文档最常被引用.元数据供应了一种有效的办法来指明办法能否取决于其他办法,它们能否完好,特定类能否必须引用其他类,等等.这确切非常有效,但关于将元数据增添到 Java 语言中来说,文档编制大概是 最不相关的来由.Javadoc 已经供应了非常简单理解和结实的办法来文档化代码.别的,当已经存在文档编制工具,并且在大大都时刻都工作得很好时,谁还要编写文档编制工具?
编译器查抄
元数据更重要的长处是编译器可以利用它来履行基本的编译时查抄.比方,您将在本文背面的 Override 注释中看到 Tiger 引入了一个这样的注释,用于答应您指定一种办法覆盖超类中的另一种办法.Java 编译器可以确保在元数据中指明的行为实际发生在代码级别.假如历来没有找出过这种范例的 bug,这样做仿佛有点傻,但是大大都年纪很大的 Java 编程熟行都曾经耗费至少多个晚上来查明他们的代码为什么不能用.当最后熟习到办法的参数有错,且该办法实际上 没有 覆盖超类中的办法时,您大概更感到难熬.利用元数据的工具有助于轻松地查明这种范例的错误,从而可以节俭那些晚上来看长期举行的 Halo 联赛.
代码解析
可以证明,任何好的注释或元数据工具的最好功效就是可以利用额外数据来解析代码.在一个简单的案例中,您大概构建代码目录,供应必须的输入范例并指明返回范例.但是,您大概想,Java 反射具有相同的长处;毕竟,可认为全部这些信息内省代码.这从表面上看仿佛是精确的,但是在实际中普通不利用.很多时刻,办法作为输入承受的大概作为输出返回的范例实际上不是该办法想要的范例.比方,参数范例大概是 Object ,但办法大概仅利用 Integer .这在好些情形下很简单发生,比方在办法被覆盖而超类利用通例参数声明办法时,还有正在举行很多序列化的系统中也简单发生.在这两种情形中,元数据可以指导代码解析工具,固然参数范例是 Object ,但 Integer 才是真正需求的.这类解析非常有效,但也不能浮夸它的代价.
在更复杂的情形下,代码解析工具可以履行全部种类的额外任务.示例 du jour 是 Enterprise JavaBean (EJB) 组件.乃至简单 EJB 系统中的依靠性和复杂性都非常令人吃惊.您具有了 home 接口和远程接口,以及本地接口和本地 home 接口,还有一个实现类.保持全部这些类同步非常艰难.但是,元数据可以供应这个问题的办理放案.好的工具(还是要提一下 XDoclet)可以管理全部这些依靠性,并确保无“代码级”衔接、但有“逻辑级”捆绑的类保持同步.元数据在这里确切可以施展它的作用.
注释的基本知识
目前已经理解了元数据的好处,我将介绍 Tiger 中的注释.注释采取“at”标志情势 ( @ ),背面是注释名称.然后在需求数据时,通过 name=value 对向注释供应数据.每次利用这类表示法时,就是在生成注释.一段代码大概会有 10 个、50 个或更多的注释.不过,您将发现多个注释都大概利用相同的 注释范例.范例是实际利用的构造,在特定上下文中,注释本身是该范例的具体利用(请参阅侧栏 注释或注释范例?).
注释分为三个基本种类:
标志注释没有变量.注释显示简单,由名称标识,没有供应其他数据.比方, @MarkerAnnotation 是标志注释.它不包含数据,唯一注释名称.
单一值注释与标志注释近似,但供应一段数据.因为仅供应很少的一点数据,所以可以利用快速语法(假定注释范例承受此语法): @SingleValueAnnotation("my data") .除了 @ 标志外,这应当与普通的 Java 办法调用很像.
完好注释有多个数据成员.因此,必须利用更完好的语法(注释不再像普通的 Java 办法): @FullAnnotation(var1="data value 1", var2="data value 2", var3="data value 3") .
除了通过默许语法向注释供应值外,还可以在需求传送多个值时利用名称-值对.还可以通过花括号为注释变量供应值数组.清单 1 显示了注释中的值数组的示例.
以上是“Tiger中的注释,第1部份: 向Java代码中增添元数据[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |