Skip to content

Yet another programming solutions log

Sample bits from programming for the future generations.

Technologies Technologies
  • Algorithms and Data Structures
  • Java Tutorials
  • JUnit Tutorial
  • MongoDB Tutorial
  • Quartz Scheduler Tutorial
  • Spock Framework Tutorial
  • Spring Framework
  • Bash Tutorial
  • Clojure Tutorial
  • Design Patterns
  • Developer’s Tools
  • Productivity
  • About
Expand Search Form

Java unchecked warnings

farenda 2016-05-08 0

Java unchecked warnings

In this tutorial we’re going to show how to eliminate unchecked warnings that occur frequently when mixing Java Generics with legacy code.

Sometime, when working with pre-generics code (for example old Apache Commons), you may encounter the following warnings:
Unchecked assignment: ‘java.util.List’ to ‘java.util.List<java.lang.String>’

It means that you try to assign not type safe object to a type safe variable. If you are make sure that such assignment is type safe, you can disable the warning using @SuppressWarnings annotation, as in the following examples.

SuppressWarnings on variable declaration

private static List namesFromLibrary() {
    return Arrays.asList("Java", "Clojure");
}

public static void main(String[] args) {
    @SuppressWarnings("unchecked")
    List<String> names = namesFromLibrary();
    System.out.println(names);
}

SuppressWarnings on method

In short methods unchecked warning can be eliminated on method level:

@SuppressWarnings("unchecked")
private static List<String> moreNames() {
    return new ArrayList(Arrays.asList("Bernard", "Witold"));
}

public static void main(String[] args) {
    List<String> moreNames = moreNames();
    System.out.println(moreNames);
}

SuppressWarnings before return statement

@SuppressWarnings cannot be used on return statement, but result can be assigned to a local variable, where the warning can be eliminated:

private static List<String> evenMoreNames() {
    @SuppressWarnings("unchecked")
    ArrayList names = new ArrayList(Arrays.asList("Jon", "Snow"));
    return names;
}

public static void main(String[] args) {
    List<String> evenMoreNames = evenMoreNames();
    System.out.println(evenMoreNames);
}

SuppressWarnings on class

Although it is allowed, this practice is strongly discouraged, because it may eliminate more than one would like to:

@SuppressWarnings("unchecked")
public class UncheckedWarnings {
    // code with unchecked warnings
}

Rule of SuppressWarnings

Use @SuppressWarnings on the narrowest possible scope.

References:

  • Effective Java (2nd Edition)
Share with the World!
Categories Java Tags java, java-basics
Previous: Java Locale information
Next: Java Util Currency getAvailableCurrencies

Recent Posts

  • Java 8 Date Time concepts
  • Maven dependency to local JAR
  • Caesar cipher in Java
  • Java casting trick
  • Java 8 flatMap practical example
  • Linked List – remove element
  • Linked List – insert element at position
  • Linked List add element at the end
  • Create Java Streams
  • Floyd Cycle detection in Java

Pages

  • About Farenda
  • Algorithms and Data Structures
  • Bash Tutorial
  • Bean Validation Tutorial
  • Clojure Tutorial
  • Design Patterns
  • Java 8 Streams and Lambda Expressions Tutorial
  • Java Basics Tutorial
  • Java Collections Tutorial
  • Java Concurrency Tutorial
  • Java IO Tutorial
  • Java Tutorials
  • Java Util Tutorial
  • Java XML Tutorial
  • JUnit Tutorial
  • MongoDB Tutorial
  • Quartz Scheduler Tutorial
  • Software Developer’s Tools
  • Spock Framework Tutorial
  • Spring Framework

Tags

algorithms bash bean-validation books clojure design-patterns embedmongo exercises git gof gradle groovy hateoas hsqldb i18n java java-basics java-collections java-concurrency java-io java-lang java-time java-util java-xml java8 java8-files junit linux lists log4j logging maven mongodb performance quartz refactoring regex rest slf4j solid spring spring-boot spring-core sql unit-tests

Yet another programming solutions log © 2021

sponsored