What Is It?
As stated by rgettman it's a generic type LoadTarget
with a type argument set to a lower-bounded wildcard.
What Does It Allow?
At runtime a LoadTarget
variable can be substituted (set) with a value of same type where the type argument is PopulationLoadContext
or an ancestor.
Why?
To allow flexibility - a family of different instantiated types can be substituted for one another and work fine. Within LoadTarget
, the type parameter is used for method parameters (input) or for upper type bounds of internally instantiated generic types. In these cases a broader type is substitutable for the original type because it is more accommodating. The generic type is said to have contravariance with it's type parameter