== Why is this an issue? include::../description.adoc[] === Noncompliant code example [source,java] ---- public void example() { for (Foo obj : (List) getFoos()) { // Noncompliant; cast unnecessary because List is what's returned //... } } public List getFoos() { return this.foos; } ---- === Compliant solution [source,java] ---- public void example() { for (Foo obj : getFoos()) { //... } } public List getFoos() { return this.foos; } ---- === Exceptions Casting may be required to distinguish the method to call in the case of overloading: [source,java] ---- class A {} class B extends A{} class C { void fun(A a){} void fun(B b){} void foo() { B b = new B(); fun(b); fun((A) b); //call the first method so cast is not redundant. } } ---- ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::../message.adoc[] ''' == Comments And Links (visible only on this page) include::../comments-and-links.adoc[] endif::env-github,rspecator-view[]