== Why is this an issue? This rule raises an issue when an iteration over the items of a ``++Collection++`` is performed on a super-type of the type handled by the ``++Collection++``. Relying on ``++Object++`` or any classes between ``++Object++`` and the real class handled by the ``++Collection++`` is not recommended. While it's accepted by the language, this practice reduces readability of the code and forces to down-cast the item of the ``++Collection++`` to be able to call a method on it while simply using the correct type in the iteration makes things more clear and simple. === Noncompliant code example [source,java] ---- public Collection getPersons() { ... } for (Object item : getPersons()) { // Noncompliant Person person = (Person) item; // Noncompliant; it's required to down-cast to the to correct type to use "item" person.getAdress(); } ---- === Compliant solution [source,java] ---- for (Person person : getPersons()) { // Compliant person.getAddress() ; } ---- ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Change "XXX" by the type handled by the Collection. === Highlighting First: the "wrong" type Second: the Collection part of the iteration ''' == Comments And Links (visible only on this page) === on 12 Sep 2018, 16:41:38 Alexandre Gigleux wrote: \[~nicolas.peru] Can you review? === on 12 Sep 2018, 16:45:47 Nicolas Peru wrote: LGTM endif::env-github,rspecator-view[]