java注解:@Deprecated(不建议使用的,废弃的);@SuppressWarnings(忽略警告,达到抑制编译器产生警告的目的)
2017-01-15 15:02
337 查看
java注解:@Deprecated(不建议使用的,废弃的), @SuppressWarnings(忽略警告,达到抑制编译器产生警告的目的)
@Deprecated可以修饰类、方法、变量,在java源码中被@Deprecated修饰的类、方法、变量等表示不建议使用的,可能会出现错误的,可能以后会被删除的类、方法等,如果现在使用,则在以后使用了这些类、方法的程序在更新新的JDK、jar包等就会出错,不再提供支持。
个人程序中的类、方法、变量用@Deprecated修饰同样是不希望自己和别人在以后的时间再次使用此类、方法。 当编译器编译时遇到了使用@Deprecated修饰的类、方法、变量时会提示相应的警告信息。
@SuppressWarnings 可以达到抑制编译器编译时产生警告的目的,但是很不建议使用@SuppressWarnings注解,使用此注解,编码人员看不到编译时编译器提示的相应的警告,不能选择更好、更新的类、方法或者不能编写更规范的编码。同时后期更新JDK、jar包等源码时,使用@SuppressWarnings注解的代码可能受新的JDK、jar包代码的支持,出现错误,仍然需要修改。
可以看成@Deprecated注解和@SuppressWarnings注解是成对出现的。
通过@SuppressWarnings的源码可知,其注解目标为类、字段、函数、函数入参、构造函数和函数的局部变量。而家建议注解应声明在最接近警告发生的位置
抑制警告的关键字
参考:http://www.cnblogs.com/fsjohnhuang/p/4040785.html
@Deprecated可以修饰类、方法、变量,在java源码中被@Deprecated修饰的类、方法、变量等表示不建议使用的,可能会出现错误的,可能以后会被删除的类、方法等,如果现在使用,则在以后使用了这些类、方法的程序在更新新的JDK、jar包等就会出错,不再提供支持。
个人程序中的类、方法、变量用@Deprecated修饰同样是不希望自己和别人在以后的时间再次使用此类、方法。 当编译器编译时遇到了使用@Deprecated修饰的类、方法、变量时会提示相应的警告信息。
@SuppressWarnings 可以达到抑制编译器编译时产生警告的目的,但是很不建议使用@SuppressWarnings注解,使用此注解,编码人员看不到编译时编译器提示的相应的警告,不能选择更好、更新的类、方法或者不能编写更规范的编码。同时后期更新JDK、jar包等源码时,使用@SuppressWarnings注解的代码可能受新的JDK、jar包代码的支持,出现错误,仍然需要修改。
可以看成@Deprecated注解和@SuppressWarnings注解是成对出现的。
通过@SuppressWarnings的源码可知,其注解目标为类、字段、函数、函数入参、构造函数和函数的局部变量。而家建议注解应声明在最接近警告发生的位置
/** * @Description: 编码时我们总会发现如下变量未被使用的警告提示, * 上述代码编译通过且可以运行,但每行前面的“感叹号”就严重阻碍了我们判断该行是否设置的断点了。 * 这时我们可以在方法前添加 @SuppressWarnings("unchecked") 去除这些“感叹号”。 */ public String convertXmlToSendMethods(Document document){ //发布方式(1到多个) List<Element> methodName = document.selectNodes("/alert/code/method/methodName"); List<Element> message = document.selectNodes("/alert/code/method/message"); List<Element> audienceGrp = document.selectNodes("/alert/code/method/audienceGrp"); List<Element> audenceprt = document.selectNodes("/alert/code/method/audenceprt"); //处理‘发布方式’复数 int methodNameSize = 0; if (null!=methodName && methodName.size()>0) { methodNameSize = methodName.size(); } JSONArray jsonArraySendMethods = new JSONArray(); for (int i = 0; i < methodNameSize; i++) { JSONObject json = new JSONObject(); json.put("methodName", methodName.get(i).getTextTrim()); json.put("message", message.get(i).getTextTrim()); json.put("audienceGrp", audienceGrp.get(i).getTextTrim()); json.put("audenceprt", audenceprt.get(i).getTextTrim()); jsonArraySendMethods.put(json); } return jsonArraySendMethods.toString(); }
@SuppressWarings注解 详解
/** * @Description:示例1——抑制单类型的警告: */ @SuppressWarnings("unchecked") public void addItems(String item){ @SuppressWarnings("rawtypes") List items = new ArrayList(); items.add(item); } /** * @Description: 示例2——抑制多类型的警告: */ @SuppressWarnings(value={"unchecked", "rawtypes"}) public void addItems(String item){ List items = new ArrayList(); items.add(item); } /** * @Description:示例3——抑制所有类型的警告: */ @SuppressWarnings("all") public void addItems(String item){ List items = new ArrayList(); items.add(item); }
抑制警告的关键字
关键字 | 用途 |
all | to suppress all warnings |
boxing | to suppress warnings relative to boxing/unboxing operations |
cast | to suppress warnings relative to cast operations |
dep-ann | to suppress warnings relative to deprecated annotation |
deprecation | to suppress warnings relative to deprecation |
fallthrough | to suppress warnings relative to missing breaks in switch statements |
finally | to suppress warnings relative to finally block that don’t return |
hiding | to suppress warnings relative to locals that hide variable |
incomplete-switch | to suppress warnings relative to missing entries in a switch statement (enum case) |
nls | to suppress warnings relative to non-nls string literals |
null | to suppress warnings relative to null analysis |
rawtypes | to suppress warnings relative to un-specific types when using generics on class params |
restriction | to suppress warnings relative to usage of discouraged or forbidden references |
serial | to suppress warnings relative to missing serialVersionUID field for a serializable class |
static-access | o suppress warnings relative to incorrect static access |
synthetic-access | to suppress warnings relative to unoptimized access from inner classes |
unchecked | to suppress warnings relative to unchecked operations |
unqualified-field-access | to suppress warnings relative to field access unqualified |
unused | to suppress warnings relative to unused code |
相关文章推荐
- EffectiveJava(24)使用@SuppressWarnings("unchecked")消除非受检警告
- 忽略警告注解@SuppressWarnings详解
- 使用 @SuppressWarnings 来排除警告(@SuppressWarning を使用しての警告の排除)
- @SuppressWarnings可以抑制的警告类型
- @SuppressWarnings忽略警告
- 使用@SuppressWarnings("unchecked")消除非受检警告
- loadrunner使用socket协议来实现客户端对服务器产生压力实例。(通过发送心跳包,达到连接多个客户端的目的)
- MySQL中的float和decimal类型float,double容易产生误差,对精确度要求比较高时,建议使用decimal来存,
- 条款53:不要轻忽编译器的警告(Pay attention to complier warnings.)
- java 注解:SuppressWarnings、Deprecated、Override
- Qt使用MinGW编译,如何忽略警告
- @SuppressWarnings的使用、作用、用法
- java高新技术之注解(@Target、@SuppressWarnings、Deprecated 、Retention )
- switch case 遍历 table表头的时候使用枚举来便利 (switch 不支持字符串类型,用这种方式来达到使用目的)
- JDk标注@Override@Deprecated@SuppressWarnings
- 使用FORM,禁用默认提交,使用ajax提交,目的是使用Validform FORM验证插件,实践证明,没有达到目的,未通过验证,仍然被提交了
- [Java 5.0] Annotation – @Deprecated @Override @SuppressWarnings
- 如何使用泛型达到代码重用的目的
- VC++6.0环境下,使用传引用方式调用自定义的swap函数来达到两数交换的目的
- outlook的签名导致新邮件使用签名时产生ActiveX警告。