groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jochen Theodorou <blackd...@gmx.org>
Subject Re: static propertyMissing in an interface
Date Sun, 03 Apr 2016 05:23:25 GMT
On 01.04.2016 03:48, OC wrote:
> Hello there,
>
> playing with possibilities of the i/i pattern, I have found one can install a static
property to an interface, and then use the property all right -- see a proof-of-concept below.
>
> Since it might be used e.g. to create instances or to get a factory through public API
based on interfaces (which would otherwise not be possible without exposing the implementation
class), this is truly interesting.
>
> The question is: can I rely on this rather arcane behaviour, that it will not be broken
in future Groovy versions?

if you want to be really sure it will continue working it is best if you 
contribute a test case ;) But I see no plans to change that, especially 
with java8 being able to define static methods and thus static properties.

[...]
>        def body={-> "<$name in $delegate>" }
>        delegate.metaClass.static."$getter"=body
>        delegate."$getter"() // I wonder why just "body()" does not work?!?

no idea why not... but you can always try body.call() instead.

bye Jochen

Mime
View raw message