A List can hold numbers, words or really anything. That's why we call the List generic.
Generics are basically used to define which types a class can hold and which type an object currently holds.
|TypeName||Type Name of generic parameter|
|ClassName||Name of the class|
In Kotlin Generics, the upper bound of type parameter
T would be
Any?. Therefore for this class:
The type parameter
T is really
T: Any?. To make a non-nullable upper bound, explicitly specific
T: Any. For example:
class Consumer<T: Any>