A method or class with too many type parameters has likely aggregated too many responsibilities and should be split.

Noncompliant Code Example

With the default parameter value of 2:

<S, T, U, V> void foo() {} // Noncompliant; not really readable
<String, Integer, Object, String>foo(); // especially on invocations