JDK 13 RFR of JDK-8224687: Add clarifying overrides of Element.asType to more specific subinterfaces

Joe Darcy joe.darcy at oracle.com
Thu May 30 18:11:48 UTC 2019

Hi Ron,

On 5/30/2019 10:44 AM, Ron Shapiro wrote:
> Is it within scope to return the specific subtypes as covariant return 
> types? e.g. TypeParameterElement could return TypeVariable, 
> TypeElement could return DeclaredType, etc.
Based on experience with the earlier apt API, it was a conscious design 
choice for javax.lang.model to not use covariant returns in a case like 
this even though it seems appealing. The issue is the that the 
javax.lang.model is intended to be implemented by different compilers, 
including compilers where the native declaration and type hierarchies 
don't match the declaration and type hierarchies in the javax.lang.model 
modeling interfaces. In particular, some compilers might want to use a 
single type to implement many (or all) of the javax.lang.model.element 
interfaces. Having covariant overrides would interfere with such a 
reduced-type design.



More information about the compiler-dev mailing list