Reports any variables which may be declared with a weaker type. For instance, a variable may be of type ArrayList, and only the method isEmpty() is called on it. In this case the type List would do just as well.

Enable the first checkbox below to prevent weakening the left side of assignments when the right side is not a type cast or new expression. When storing the result of a method call in a variable, it is useful to retain the type of the method call result instead of unnecessarily weakening it.

Enable the second checkbox below to use the parameterized type of the collection as weakest type when the object evaluated is used as an argument to a collection method with a parameter type of java.lang.Object. Use this option to prevent weakening to Object when passing an object to the collection methods get(), remove(), contains(), indexOf(), lastIndexOf(), containsKey() and containsValue().

Use the third checkbox below to specify if this inspection should warn when a type can be weakened to java.lang.Object. Weakening to java.lang.Object is often not very useful.

Use the fourth checkbox below to only report when the type can be weakened to an interface type.