If I have an ArrayList<Shape>, I'm under the impression that within that list I can store objects of class Shape or objects that are subclasses of Shape.
I've also seen a lot of notation around with things like ArrayList<T> or ArrayList<?>. Are these the same things? A T superclass and all its subclasses can be stored, and the ? is just a placeholder?
Basically, how does something like ArrayList<CLASSNAME> differ from ArrayList<T> where you just have the one letter.
CLASSNAME. If there isn't, then there is not difference betweenArrayList<CLASSNAME>,ArrayList<T>, andArrayList<WarAndPeace_ANovelByLeoTolstoy>- they are all just binding the template argument to a differently named symbol.