The question mark (?), represents the wildcard, stands for unknown type in generics. There may be times when any object can be used when a method can be implemented using functionality provided in the Object class or When the code is independent of the type parameter.

To declare a Unbounded Wildcard parameter, list the ? only.

Example

Following example illustrates how extends is used to specify an unbounded wildcard.

package com.tutorialspoint;

import java.util.Arrays;
import java.util.List;

public class GenericsTester {
   public static void printAll(List<?> list) {
  for (Object item : list)
     System.out.println(item + " ");
} public static void main(String args[]) {
  List&lt;Integer&gt; integerList = Arrays.asList(1, 2, 3);
  printAll(integerList);
  List&lt;Double&gt; doubleList = Arrays.asList(1.2, 2.3, 3.5);
  printAll(doubleList);
} }

This will produce the following result −

Output

1 
2 
3 
1.2 
2.3 
3.5