<div dir="ltr">It was tricky but this works partly.<div><br></div><div>Annotation [[]] [java.lang.String&amp;java.io.Serializable]</div><div><br></div><div><div><div><div>            TypeVariable tv = (TypeVariable)typeParameterElement.asType();</div>
<div><br></div><div>            TypeMirror tm = tv.getUpperBound();</div><div><br></div><div>            System.out.println( &quot;Annotation [&quot; + Arrays.asList( tm.getAnnotationsByType(com.test.IntersectionType.TypeUse.class)) + &quot;] [&quot; + tm  + &quot;]&quot;);</div>
</div><div><br></div><div><br></div><div>Thanks,</div><div>Mohan</div><div><br></div></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jan 23, 2014 at 12:38 AM, Alex Buckley <span dir="ltr">&lt;<a href="mailto:alex.buckley@oracle.com" target="_blank">alex.buckley@oracle.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On 1/22/2014 6:11 AM, Jan Lahoda wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
On 01/21/2014 11:08 PM, Alex Buckley wrote:<br>
</div><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
While &quot;Number &amp; Runnable&quot; is technically an intersection type, there is<br>
no way to get a single IntersectionType mirror for the entire &#39;extends&#39;<br>
clause of a type parameter. A TypeParameterElement exposes a list of<br>
mirrors. (I suppose it could be a one-element list, where the sole<br>
mirror is an IntersectionType, but that would be a behavioral change<br>
from SE 7.) Literally any other use of an intersection type would be a<br>
</blockquote>
<br>
I think one can (currently) get an IntersectionType from<br>
javax.lang.model.type.<u></u>TypeVariable.getUpperBound(), if the type variable<br>
was declared with multiple (upper) bounds.<br>
</div></blockquote>
<br>
I agree that if you have the TypeParameterElement in hand for the declaration of type parameter T (which extends Foo &amp; Bar), the API lets you call asType() to get the TypeVariable mirror, and hence getUpperBound() which may return an IntersectionType mirror.<br>

<br>
But this approach is rather subtle, because the sense of TypeVariable is that it mirrors a type variable at a use site, hence getLowerBound() as well as getUpperBound().<span class="HOEnZb"><font color="#888888"><br>
<br>
Alex<br>
</font></span></blockquote></div><br></div>