According to the Generics trial,
This section states:
Given two concrete types A and B (for example, Number and Integer),
MyClass<A>has no relationship toMyClass<B>, regardless of whether or not A and B are related. The common parent ofMyClass<A>andMyClass<B>is Object.
Yet, here we’re told,
Although Integer is a subtype of Number,
List<Integer>is not a subtype ofList<Number>and, in fact, these two types are not related. The common parent ofList<Number>andList<Integer>isList<?>.
Why isn’t the parent of MyClass<A> / MyClass<B> in the first example MyClass<?>? What is the distinction?
I think the answer is rather trivial. While the correct parent of
MyClass<A>andMyClass<B>is indeedMyClass<?>, the tutorial did a small simplification there, as wildcards have not been introduced yet.The point of saying
was just to make it clear that none of the two types is the parent of the other, regardless of the relationship between
AandB.This is confirmed by the following comment right below your first quote:
as well as by the introduction of the chapter Wildcards and Subtyping: