Generic types shouldn't be used raw (without type parameters) in variable declarations or return values. Doing so bypasses generic type checking, and defers the catch of unsafe code to runtime.
== Noncompliant Code Example
----
List myList; // Noncompliant
Set mySet; // Noncompliant
== Compliant Solution
List<String> myList;
Set<? extends Number> mySet;