Compilation fails because anonymous class constructor formal parameter has inaccessible type

Srikanth srikanth.adayapalam at oracle.com
Wed Jul 22 14:55:20 UTC 2015


Hi Victor,

Thanks, is this the same as 
https://bugs.openjdk.java.net/browse/JDK-8075799 ?

Srikanth

On Wednesday 22 July 2015 07:33 PM, Georgiy Rakov wrote:
> Hello,
>
> let's consider following example:
>
>     classTest18_2 {
>          private static classMyClass {}
>          public staticMyClassv1=newMyClass();
>          Test18_2(MyClass mc) {}
>     }
>
>     public classTest18 {
>          public static voidmain(String[] args) {
>              newTest18_2(Test18_2.v1){};
>          }
>     }
>
>
> this example fails to compile on JDK9b73 with following error:
>
>     Error:(9, 34) java: Test18_2.MyClass has private access in Test18_2
>
> However according to my understanding compilation should succeed as 
> per assertion jls-15.9.5.1-200:
>
>     Note that it is possible for the signature of the anonymous
>     constructor to refer to an inaccessible type (for example, if such
>     a type occurred in the signature of the superclass constructor
>     |cs|). This does not, in itself, cause any errors at either
>     compile-time or run-time.
>
> It seems to be a javac bug. Could you please tell if you agree.
>
> Thanks,
> Georgiy.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20150722/c632fb08/attachment.html>


More information about the compiler-dev mailing list