== Why is this an issue?

Shared coding conventions allow teams to collaborate effectively. While types for lambda arguments are optional, specifying them anyway makes the code clearer and easier to read.


=== Noncompliant code example

[source,java]
----
Arrays.sort(rosterAsArray,
    (a, b) -> {  // Noncompliant
        return a.getBirthday().compareTo(b.getBirthday());
    }
);
----


=== Compliant solution

[source,java]
----
Arrays.sort(rosterAsArray,
    (Person a, Person b) -> {
        return a.getBirthday().compareTo(b.getBirthday());
    }
);
----


=== Exceptions

When the lambda has one or two parameters and does not have a block this rule will not fire up an issue as things are considered more readable in those cases.

[source,java]
----
stream.map((a, b) -> a.length); // compliant
----

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

=== Message

Specify a type for: 'x' {, 'y', ...}


endif::env-github,rspecator-view[]
