In Java type arguments, does mean strictly subtypes only? or would E also suffice?
Yes, super
and extends
gives inclusive lower and upper bounds respectively.
Here's a quote from Angelika Langer's Generics FAQ:
What is a bounded wildcard?
A wildcard with an upper bound looks like
? extends Type
and stands for the family of all types that are subtypes ofType
, typeType
being included.Type
is called the upper bound.A wildcard with a lower bound looks like
? super Type
and stands for the family of all types that are supertypes ofType
, typeType
being included.Type
is called the lower bound.
It's not strict; E
would suffice.
Yes, super
and extends
gives inclusive lower and upper bounds respectively.
Here's a quote from Angelika Langer's Generics FAQ:
What is a bounded wildcard?
A wildcard with an upper bound looks like
? extends Type
and stands for the family of all types that are subtypes ofType
, typeType
being included.Type
is called the upper bound.A wildcard with a lower bound looks like
? super Type
and stands for the family of all types that are supertypes ofType
, typeType
being included.Type
is called the lower bound.
<T extends E>
, I get error if I try to pass E instance. –
Gerbold List<? extends Animal> animalList=new List<Dog>();
List<? extends Animal> animalList=new List<Animal>();
Both the lines compile without any error. Any function taking the list as a parameter understands that the objects in the list are of type E or a subtype of E.
© 2022 - 2024 — McMap. All rights reserved.
<T extends E>
, I get error if I try to pass E instance. – Gerbold