T represents a type.
Add to the class:
class SuperClass<A>{}
Add to the method:
public <T>void fromArrayToCollection(T[] a, Collection<T> c){}
(Free learning video tutorial sharing: java video tutorial)
The
class People<T>{ public void show(T a) { } }
T extends T2 means that the passed parameter is T2 or a subtype of T2.
? is a wildcard character and refers to all types.
is generally used to define a reference variable. The advantage of this is that, as shown below, defining a sup reference variable can point to multiple objects.
SuperClass<?> sup = new SuperClass<String>("lisi"); sup = new SuperClass<People>(new People()); sup = new SuperClass<Animal>(new Animal());
If you don’t use ?, and use a fixed type, then:
SuperClass<String> sup1 = new SuperClass<String>("lisi"); SuperClass<People> sup2 = new SuperClass<People>("lisi"); SuperClass<Animal> sup3 = new SuperClass<Animal>("lisi");
This is the benefit of ? wildcard.
Recommended related articles and tutorials: java introductory tutorial
The above is the detailed content of The difference between T and ? in java generics. For more information, please follow other related articles on the PHP Chinese website!