Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: wordsmithing

...

Limit the scope of the @SuppressWarnings annotation to the nearest unchecked warning-generating codecode that generates a warning. In this case, it may be used in the declaration for the Set.

Code Block
bgColor#ccccff
class Legacy {
  @SuppressWarnings("unchecked")
  Set s = new HashSet();
  public final void doLogic(int a,char c) {
    s.add(a); // Produces unchecked warning
    s.add(c); // Produces unchecked warning
  }
}

Noncompliant Code Example (ArrayList)

This noncompliant code example is from the implementation of java.util.ArrayList

...

Because the return statement is not a declaration, the Java Language Specification [JLS 2011] makes it impossible to suppress the warning trivially by using @SuppressWarnings at that statement. Consequently, the @SuppressWarnings is used over method scope where it is allowed. This can cause issues when some functionality that performs type-unsafe operations is added to the method at a later date [Bloch 2008].

Compliant

...

Solution (ArrayList)

When it is impossible to use the @SuppressWarnings annotation, as in the preceding noncompliant code example, declare a new variable to hold the return value and adorn it with the @SuppressWarnings annotation.

...