Rachel, Paul,

thanks a lot!

Pity not even today's Java supports something like Objective-C runtime support 
for managing the methods in a class :(

Anyway, I might try to create my (sub)classes dynamically at runtime — this is 
an idea which did not occur to me before; and although I can see some hurdles 
(for one, the classes which I need most to support dynamic methods/properties 
are database classes; and the source from which I read in the information of 
dynamic methods is... the very database; I'll have to find some trick here), it 
looks pretty promising.

Thanks again and all the best,
OC

> On 27 Aug 2021, at 1:13, Paul King <pa...@asert.com.au> wrote:
> 
> As Rachel said, methods/properties added via runtime metaprogramming will 
> only be visible to Groovy's reflection capabilities. Some frameworks have 
> moved to using compile-time metaprogramming (AST transforms, macros/macros 
> methods) or traits so that added features will be visible also to Java.
> 
> Cheers, Paul.
> 
> On Fri, Aug 27, 2021 at 12:34 AM o...@ocs.cz <mailto:o...@ocs.cz> 
> <o...@ocs.cz <mailto:o...@ocs.cz>> wrote:
> Rachel,
> 
> yes, I use the metaclass stuff heavily; but I am often bumping into problems 
> with library code which accesses attributes of my classes through reflexion 
> (and due to that, does not see my dynamically installed accessors etc).
> 
> I know the Javas of old did not support that; but I sort of hoped today's one 
> just might. Today's Groovy just might not exploit it normally due to the 
> backward compatibility with the metaclass stuff which used to be the only way 
> to get runtime metaprogramming originally, when Groovy has been created.
> 
> Looks like bad luck :(
> 
> Thanks,
> OC
> 
>> On 26. 8. 2021, at 15:43, Rachel Greenham <rac...@merus.eu 
>> <mailto:rac...@merus.eu>> wrote:
>> 
>> Through java.lang.reflect? I'd guess not as that would involve actually 
>> changing the bytecode of a loaded class at runtime to add methods... It's 
>> just not a JVM thing, I think - if it was, at least by any official means, 
>> Groovy would probably have been written to use it instead of all the stuff 
>> it does with metaclasses.
>> 
>> But if you're all in groovy, you can add methods dynamically using expando i 
>> think and then they're findable through *Groovy's* metaclass apis... but no, 
>> they won't be findable/reflectable by Java code.
>> 
>> -- 
>> Rachel Greenham
>> rac...@merus.eu <mailto:rac...@merus.eu>
>> 
>>> On 26 Aug 2021, at 14:35, o...@ocs.cz <mailto:o...@ocs.cz> wrote:
>>> 
>>> Hi there,
>>> 
>>> the subject says it all. I've asked this long time ago (and got a negative 
>>> answer then), but meantime there's Groovy 3.
>>> 
>>> Is there now a way to do that?
>>> 
>>> Most important it would be with my own class (subclass of a library class), 
>>> if it helps to find a solution.
>>> 
>>> Thanks,
>>> OC
>>> 
>> 
> 

Reply via email to