Search code examples
javagenericswarnings

What causes javac to issue the "uses unchecked or unsafe operations" warning


For example:

javac Foo.java
Note: Foo.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Solution

  • This comes up in Java 5 and later if you're using collections without type specifiers (e.g., Arraylist() instead of ArrayList<String>()). It means that the compiler can't check that you're using the collection in a type-safe way, using generics.

    To get rid of the warning, you need to be specific about what type of objects you're storing in the collection. So, instead of

    List myList = new ArrayList();
    

    use

    List<String> myList = new ArrayList<String>();
    

    In Java 7 you can shorten generic instantiation by using Type Inference.

    List<String> myList = new ArrayList<>();