== Why is this an issue? When implementing the ``++Comparable.compareTo++`` method, the parameter's type has to match the type used in the ``++Comparable++`` declaration. When a different type is used this creates an overload instead of an override, which is unlikely to be the intent. This rule raises an issue when the parameter of the ``++compareTo++`` method of a class implementing ``++Comparable++`` is not same as the one used in the ``++Comparable++`` declaration. === Noncompliant code example [source,java] ---- public class Foo { static class Bar implements Comparable { public int compareTo(Bar rhs) { return -1; } } static class FooBar extends Bar { public int compareTo(FooBar rhs) { // Noncompliant: Parameter should be of type Bar return 0; } } } ---- === Compliant solution [source,java] ---- public class Foo { static class Bar implements Comparable { public int compareTo(Bar rhs) { return -1; } } static class FooBar extends Bar { public int compareTo(Bar rhs) { return 0; } } } ---- ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Refactor this method so that its argument is of type 'xxx' === Highlighting compareTo declaration endif::env-github,rspecator-view[]