In Java, known as Wildcard, you can use it to send . ?unknown type
The upper bounded wildcard, where Foo is any type, matches Foo and any subtype of Foo. A process method can access list items as a type of Foo:
public static void process(Map<? extends A> list) {
}
In your case, this is called the top restricted template.
http://docs.oracle.com/javase/tutorial/java/generics/upperBounded.html
putAll(Map<? extends K, ? extends V> map)
, , A, n.