关闭

关闭

关闭

封号提示

内容

首页 [攻略] suppresswarnings(unchecked)感化说明文档.…

[攻略] suppresswarnings(unchecked)感化说明文档.doc

[攻略] suppresswarnings(unche…

上传者: 只是心里空落落de 2018-04-16 评分 0 0 0 0 0 0 暂无简介 简介 举报

简介:本文档为《[攻略] suppresswarnings(unchecked)感化说明文档doc》,可适用于综合领域,主题内容包含攻略suppresswarnings(unchecked)感化说明文档SuppressWarnings(unchecked)作用解释文档Suppre符等。

攻略suppresswarnings(unchecked)感化说明文档SuppressWarnings(unchecked)作用解释文档SuppressWarnings(unchecked)作用解释文档解释一:屏蔽某些编译时的警告信息在强制类型转换的时候编译器会给出警告加上程序代码SuppressWarnings("unchecked")就不会警告了解释二:注释类型当你的编码可能存在警告时比如安全警告可以用它来消除api中是这样描述的指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告。注意在给定元素中取消显示的警告集是所有包含元素中取消显示的警告的超集。例如如果注释一个类来取消显示某个警告同时注释一个方法来取消显示另一个警告那么将在此方法中同时取消显示这两个警告。根据风格不同程序员应该始终在最里层的嵌套元素上使用此注释在那里使用才有效。如果要在特定的方法中取消显示某个警告则应该注释该方法而不是注释它的类。解释三:SuppressWarningsJSE提供的最后一个批注是SuppressWarnings。该批注的作用是给编译器一条指令告诉它对被批注的代码元素内部的某些警告保持静默。一点背景:JSE为Java语言增加了几个新的特性并且和它们一起增加了许多新的警告并承诺在将来增加更多的警告。您可以为"javac"增加Xlint参数来控制是否报告这些警告(如上面的Deprecated部分所示)。默认情况下Sun编译器以简单的两行的形式输出警告。通过添加Xlint:keyword标记(例如Xlint:finally)您可以获得关键字类型错误的完整说明。通过在关键字前面添加一个破折号写为Xlint:keyword您可以取消警告。(Xlint支持的关键字的完整列表可以在上找到。)下面是一个清单:关键字用途deprecation使用了不赞成使用的类或方法时的警告unchecked执行了未检查的转换时的警告例如当使用集合时没有用泛型(Generics)来指定集合保存的类型。fallthrough当Switch程序块直接通往下一种情况而没有Break时的警告。path在类路径、源文件路径等中有不存在的路径时的警告。serial当在可序列化的类上缺少serialVersionUID定义时的警告。finally任何finally子句不能正常完成时的警告。all关于以上所有情况的警告。SuppressWarnings批注允许您选择性地取消特定代码段(即类或方法)中的警告。其中的想法是当您看到警告时您将调查它如果您确定它不是问题您就可以添加一个SuppressWarnings批注以使您不会再看到警告。虽然它听起来似乎会屏蔽潜在的错误但实际上它将提高代码安全性因为它将防止您对警告无动于衷您看到的每一个警告都将值得注意。下面是使用SuppressWarnings来取消deprecation警告的一个例子:publicclassDeprecatedExample{Deprecatedpublicstaticvoidfoo(){}}publicclassDeprecatedUser{SuppressWarnings(value={"deprecation"})publicstaticvoidmain(Stringargs){DeprecatedExamplefoo()}}SuppressWarnings批注接收一个"value"变量该变量是一个字符串数组它指示将取消的警告。合法字符串的集合随编译器而变化但在JDK上可以传递给Xlint的是相同的关键字集合(非常方便)。并且要求编译器忽略任何它们不能识别的关键字这在您使用一些不同的编译器时非常方便。因为SuppressWarnings批注仅接收一个参数并为该参数使用了特殊的名称"value"所以您可以选择省略value=作为一种方便的缩写:publicclassDeprecatedUser{SuppressWarnings({"deprecation"})publicstaticvoidmain(Stringargs){DeprecatedExamplefoo()}}您可以将单个数组参数中的任意数量的字符串值传递给批注并在任何级别上放置批注。例如以下示例代码指示将取消整个类的deprecation警告而仅在main()方法代码内取消unchecked和fallthrough警告:importjavautil*SuppressWarnings({"deprecation"})publicclassNonGenerics{SuppressWarnings({"unchecked","fallthrough"})publicstaticvoidmain(Stringargs){RuntimerunFinalizersOnExit()Listlist=newArrayList()listadd("foo")}publicstaticvoidfoo(){Listlist=newArrayList()listadd("foo")}}SuppressWarnings是否比前两个批注更有用,绝对是这样。不过在JDK版本中还没有完全支持该批注如果您用来尝试它那么它将类似无操作指令。调用Xlint:deprecation也没有任何效果。Sun没有声明什么时候将增加支持但它暗示这将在即将推出的一个dot版本中实现。更进一步如果您试图在Javadocs页面中查看这些属性那么您可能很难找到它们。它们位于核心的javalang包中但有点隐蔽它们出现在Javadoc类的最底端列在Exceptions和Errors后面。注意到了附加在SuppressWarnings批注后面的陌生的批注Target和Retention了吗,这些称为元数据批注它们描述了该批注在哪里适用。我将在本系列的第二篇文章中介绍它们以及介绍如何将元数据批注应用到您自己的批注中。aboutSuppressWarnings项目组来了个很Picky的头,看到Eclipse里有大量的Warning小发了下脾气后,让用SuppressWarnings这个标注来把Warning去掉为了去掉由于泛型的Warning,我们用了SuppressWarnings("unchecked"),为了去掉那些由于deprecation而引起的Warning,用了SuppressWarnings("deprecation")但一个类中既有unchecked又有deprecation时,怎么办于是用了一个很权宜之计:在类声明那用SuppressWarnings("deprecation"),而在相应的方法声明里用SuppressWarnings("unchecked")用了效果当然也达到了,可就想问在一个单独的SuppressWarnings里既去掉deprecation又去掉unchecked呢觉得应该可以达到的于是就用下面的方式来试,SuppressWarnings("deprecation","unchecked"),不行,Eclipse报错,SuppressWarnings("deprecation,unchecked"),不行,还是报错,看SuppressWarnings的源码,只有一个String类型的value就想用SuppressWarnings(newString{"deprecation","unchecked"}),还是不行,报错,Google了下后,发现了这个SuppressWarnings(value={"deprecation"}),于是就想起来了SuppressWarnings(value={"deprecation","unchecked"})呵呵,成了好久没用接触过标注了,快忘了现在记下来

职业精品

用户评论

0/200
    暂无评论

精彩专题

上传我的资料

热门资料

资料评价:

/5
0下载券 下载 加入VIP, 送下载券

意见
反馈

返回
顶部