groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Aseem Bansal <asmbans...@gmail.com>
Subject Re: dynamically attached object/added ivar
Date Fri, 12 Feb 2016 17:48:01 GMT
Where have you seen such behavior before? Expando may be something to look
at.
On 12-Feb-2016 4:50 pm, "ocs.cz" <ocs@ocs.cz> wrote:

> Hello there,
>
> have we in Groovy an API which would serve as a reliable replacement of
> “dynamically attached objects” or “dynamically added ivars” of other APIs?
> I mean a way to reasonably implement something like "x_attach" and
> "x_attached" here:
>
> def foo=... // any object of any class, typically some Map, but not
> necessarily
> def tag=... // any object of any class, possibly even a class itself
>
> foo.x_attach(tag)
> def bar=foo // just to emphasize the attachment is object's, not
> variable's property
>
> ... throughout the code, "foo" and "bar" can be used normally, all APIs
> and libraries etc. work with it the very same way they would without
> "x_attach" ...
>
> assert bar.x_attached().is(tag) // but later, I can get the attached object
>
> When the object foo/bar gets garbage-collected, it's attachment loses an
> active link and (presumed it is not referenced from another place) gets
> garbage-collected too. Due to this demand, it is rather inconvenient to
> simulate the attachments by a static map indexed e.g., by
> System.identityHashCode(foo), for -- far as I know at least -- there is no
> convenient API to determine when a generic object (whose finalize I cannot
> override) goes poof (and thus its attachment should be removed from the
> map).
>
> Thanks for any advice,
> OC
>
>
>

Mime
View raw message