== Why is this an issue?

There is no need to declare a type parameter when naming a type constraint is not required. Using wildcards makes it easier to read.


=== Noncompliant code example

[source,java]
----
<T extends MyClass> void foo(List<T> list) {  // Noncompliant, T is used only once
  for (MyClass myObj : list) {
    doSomething(myObj);
  }
}
----


=== Compliant solution

[source,java]
----
void foo(List<? extends MyClass> list) {
  for (MyClass myObj : list) {
    doSomething(myObj);
  }
}
----

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

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

=== Message

Remove this type parameter and use a wildcard instead


=== Highlighting

Type parameter declaration


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