766人阅读 评论(0)

# Supported Values for @SuppressWarnings

http://jinchun1223.javaeye.com/blog/454140
http://www.breakitdownblog.com/supported-values-for-suppresswarnings/

Update #1: All these annotations are still valid in Eclipse 3.4 and 3.5, there have been no new SuppressWarning arguments added in those versions of the JDT compiler.

If you are a Java developer and use the new @SuppressWarnings annotation in your code from time-to-time to suppress compiler warnings you, like me, have wondered probably about a million times already just exactly what are the supported values that can be used with this annotation.

The reason the list isn’t easy to find is because it’s compiler specific, which means Sun may have a different set of supported values than say IBM, GCJ or Apache Harmony.

Fortunately for us, the Eclipse folks have documented the values they support (As of Eclipse 3.3), here they are for reference:

* 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
* 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
* synthetic-access to suppress warnings relative to unoptimized access from inner classes
* unchecked to suppress warnings relative to unchecked operations
* unused to suppress warnings relative to unused code

TIP: For the folks that haven’t used @SuppressWarnings before, the syntax looks like this:

@SuppressWarnings(”unused”)

and can be placed above almost any piece of code that is causing a compiler warning to popup for your class.

# How to use @SuppressWarnings

Sometimes you will got the warning in Java when you are using the eclipse. And this is kind of annoying. Now you can use this to eliminate it:

@SuppressWarnings(option)

This can be categorized into two categories:

• Put this notation right before the code with warning:
• @SuppressWarnings("unused") String unused = "never";
• Put this notation right before the class declaration
• @SuppressWarnings("deprecation ")
• class DeprecationExample{ ... }

I think the warning options in red should be categoried into category 2.

You can simply try this out!

Warning options
-warn:
allDeprecation
assertIdentifier
boxing
charConcat
conditionAssign
constructorName
dep-ann
deprecation
discouraged
emptyBlock
enumSwitch
fallthrough
fieldHiding
finalBound
finally
forbidden
hiding
incomplete-switch
indirectStatic
intfAnnotation
intfNonInherited
localHiding
nls
noEffectAssign
null
over-ann
paramAssign
pkgDefaultMethod
raw
semicolon
serial
specialParamHiding
static-access
suppress
synthetic-access
syntheticAccess
typeHiding
unchecked
unnecessaryElse
unqualified-field-access
unqualifiedField
unused
unusedArgument
unusedImport
unusedLabel
unusedLocal
unusedPrivate
unusedThrown
uselessTypeCheck
varargsCast
warningToken
Set warning level.
e.g. -warn:unusedLocal,deprecation

In red are the default settings.

 -warn:none disable all warnings -warn:<warnings separated by ,> enable exactly the listed warnings -warn:+<warnings separated by ,> enable additional warnings -warn:-<warnings separated by ,> disable specific warnings
allDeprecation deprecation even inside deprecated code invalid or missing javadoc occurrence of assert used as identifier autoboxing conversion when a char array is used in a string concatenation without being converted explicitly to a string possible accidental boolean assignment method with constructor name missing @Deprecated annotation usage of deprecated type or member outside deprecated code use of types matching a discouraged access rule undocumented empty block incomplete enum switch possible fall-through case field hiding another variable type parameter with final bound finally block not completing normally use of types matching a forbidden access rule macro for fieldHiding, localHiding, typeHiding and maskedCatchBlock indirect reference to static member annotation type used as super interface interface non-inherited method compatibility invalid javadoc local variable hiding another variable hidden catch block non-nls string literals (lacking of tags //\$NON-NLS-) assignment with no effect missing or redundant null check missing @Override annotation assignment to a parameter attempt to override package-default method usage a of raw type (instead of a parametrized type) unnecessary semicolon or empty statement missing serialVersionUID constructor or setter parameter hiding another field macro for indirectStatic and staticReceiver if a non static receiver is used to get a static field or call a static method enable @SuppressWarnings when performing synthetic access for innerclass enable support for tasks tags in source code type parameter hiding another type unchecked type operation unnecessary else clause unqualified reference to field macro for unusedArgument, unusedImport, unusedLabel, unusedLocal, unusedPrivate and unusedThrown unused method argument unused import reference unused label unused local variable unused private member declaration unused declared thrown exception unnecessary cast/instanceof operation varargs argument need explicit cast unhandled warning token in @SuppressWarnings
0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：86975次
• 积分：1188
• 等级：
• 排名：千里之外
• 原创：15篇
• 转载：58篇
• 译文：0篇
• 评论：36条
文章分类
评论排行
最新评论