On Tue, Aug 3, 2010 at 8:20 AM, Pete Muir <pmuir(a)redhat.com> wrote:
Hi Bill,
In your example, the raw types of both the producer and consumer are both identical, so,
like you say, we need to consider the type parameters.
* the type of the producer is resolved to have a single type parameter, which is a type
variable with upper bound MediumClass.
* the required type for s1 has a single type parameter, which is an actual type
SmallClass
* the required type b1 has a single type parameter, which is an actual type BigClass
* BigClass is assignable to MediumClass
* SmallClass is NOT assignable to MediumClass
Therefore, like you say, for s1:
* The REQUIRED type parameter is an ACTUAL TYPE (yes, it's SmallClass)
* the BEAN type parameter is a TYPE VARIABLE (yes, it has upper bound MediumClass)
* and the ACTUAL TYPE is ASSIGNABLE TO the upper bound, if any, of the TYPE VARIABLE (no,
SmallClass is not assignable to MediumClass)
and for b1:
* The REQUIRED type parameter is an ACTUAL TYPE (yes, it's BigClass)
* the BEAN type parameter is a TYPE VARIABLE (yes, it has upper bound MediumClass)
* and the ACTUAL TYPE is ASSIGNABLE TO the upper bound, if any, of the TYPE VARIABLE
(yes, BigClass is assignable to MediumClass)
And yes, looking at this, it does seem the wrong way around.
Gavin, your thoughts?
Did this thread/issue go anywhere off-line?
--
Eric Covener
covener(a)gmail.com