[sealed] Changes to type system

Brian Goetz brian.goetz at oracle.com
Tue Feb 25 14:22:58 UTC 2020


Don't we have a similar problem with non-accessible supertypes and 
inference?  If I have:

     private abstract class A { }
     public class B extends A { }
     public class C extends A { }

Won't I infer LUB(B,C) = A, rather than Object?

On 2/25/2020 6:08 AM, Maurizio Cimadamore wrote:
>
> But if that's the case, I have to admit that I find it a bit awkward 
> that I can use javac to probe sealed interfaces to see which might 
> share a common implementation class, even if that implementation class 
> is out of my reach and hidden behind module boundaries. In other 
> words, while with the rules we have now, the user can always "see" why 
> a cast has succeeded or fail, with these new rules, sometimes a cast 
> can (statically) be rejected or not depending on details which might 
> be unavailable to the site where the cast operation occurs. I wonder - 
> should javac "stop" looking, and avoid descending into subtypes which 
> are not visible from the use site (e.g. consider A and B as completely 
> disjoint in the example above, if the cast occurs outside M?)



More information about the amber-spec-observers mailing list