Re: trySetAccessible
Alan Bateman
Alan.Bateman at oracle.com
Mon Jul 10 10:39:37 UTC 2017
On 10/07/2017 10:44, Jochen Theodorou wrote:
> :
>
> Example:
>
> module A:
>
> class Foo {
> protected void foo(){}
> }
>
> Groovy program:
>
> class X extends Foo {
> def bar() {return {foo()}}
> }
>
> if Foo is in an exported package, then it is legal for X to call foo,
> even though it is protected. But bar() does not directly call foo, it
> will do so in a Closure (not functional closure, not lambdas).
and therein is the issue because protected members should only be
accessible in the sub-class (or same package).
> In a Closure the implicit this has no fixed meaning and is realized as
> anonymous inner class. With our current protocol the call to foo ends
> up in the meta class logic, which then executes the method call. This
> will then cause a warning "WARNING: An illegal reflective access
> operation has occurred".
Do you have any control on the code that is generated for X?
-Alan
More information about the jigsaw-dev
mailing list