include::../description.adoc[] == Noncompliant Code Example ---- 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 ---- 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: ---- 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. } } ----