Home  >  Article  >  Java  >  Why is \"extends T\" Allowed But Not \"implements T\" in Type Parameter Bounds?

Why is \"extends T\" Allowed But Not \"implements T\" in Type Parameter Bounds?

Linda Hamilton
Linda HamiltonOriginal
2024-11-02 11:52:02896browse

Why is

Why is "extends T" Allowed But Not "implements T" in Type Parameter Bounds?

In Java, when defining bounds for type parameters, you can use "extends T" but not "implements T". This may seem like an arbitrary distinction, but it has a specific reason rooted in the Java generics implementation.

The reason for this difference lies in the semantics of inheritance and implementation. In Java, a class can only implement one interface, but it can extend multiple classes. Therefore, using "extends" in type parameter bounds allows for more flexibility in specifying the allowed types.

Example:

Consider the following code:

<code class="java">public interface C {}
public class A<B extends C> {}</code>

If we were to allow "implements" in type parameter bounds, this code would be valid. However, it would raise the question of which interface the class B should implement. Since multiple interfaces are not supported in this context, it would lead to ambiguity.

On the other hand, using "extends" in the bound ensures that the class B must be a subtype of the interface C. This is a more general constraint that does not introduce any ambiguity.

Therefore, by restricting the use of "extends" in type parameter bounds for interfaces, Java ensures the consistency and clarity of its generics implementation.

The above is the detailed content of Why is \"extends T\" Allowed But Not \"implements T\" in Type Parameter Bounds?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn