Home > Java > javaTutorial > Can Multiple Wildcards in Generic Methods Refer to Different Types?

Can Multiple Wildcards in Generic Methods Refer to Different Types?

Linda Hamilton
Release: 2024-12-06 14:18:15
Original
717 people have browsed it

Can Multiple Wildcards in Generic Methods Refer to Different Types?

Multiple Wildcards on Generic Methods

Question: Can different wildcards in generic methods refer to completely different types, and how does nested wildcard behave?

Answer:

Nested wildcards are the source of confusion, not multiple wildcards.

  • Nested Wildcards: A List> is NOT a List> because Java generics is invariant, meaning a List is not a List. Similarly, a List> is not a List>.
  • Wildcards in Generic Methods:

    • Multiple unrelated wildcards in generic methods are allowed, e.g., List list1, List list2.
    • However, the method addAll(list2) on list1 is permitted because the generic type captured by ? in both lists can be different.
    • If the wildcards have explicit upper bounds (e.g., ? extends List>), then additional restrictions apply.

Snippet Explanations:

  • LOLUnknowns1: ProbablyIllegal adds a List list to a List> lol. This compiles because ? in List can refer to any type, while List> can contain lists of any type.
  • LOLUnknowns1a: When the same ? is used for both List types, compilation fails because the capture conversion rules for nested wildcards prohibit the use of a single ? for both lists.
  • LOLUnknowns1b: When one argument is explicitly null, compilation succeeds because null is applicable to any generic type and does not participate in capture conversion.
  • DoubleLOL: Adding two List> instances is permitted because the capture conversion does not apply recursively, meaning the ? can refer to different types in each list.
  • IntoTheWild: Creating a List> for a List> is not permitted because the capture conversion is not applied recursively.
  • IntoTheWild2: The capture conversion cannot be applied to the inner list type, so List> is not a List>.

In summary, multiple wildcards in generic methods allow for flexibility in handling unknown types, while nested wildcards have specific restrictions related to capture conversion.

The above is the detailed content of Can Multiple Wildcards in Generic Methods Refer to Different Types?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
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
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template