In the Java programming language, the wildcard ?
is a special kind of type argument[1] that controls the type safety of the use of generic (parameterized) types.[2] It can be used in variable declarations and instantiations as well as in method definitions, but not in the definition of a generic type.[3][4] This is a form of use-site variance annotation, in contrast with the definition-site variance annotations found in C# and Scala.