Hi OC,
I'm pretty sure Closure has a return type, that is what the type
parametr V in Closure<V> stands for. When source is compiled using at
least @TypeChecked, the return type (e.g. long as in the example I gave)
should be known and (I suppose) accessible during runtime somehow.
Jan
On 1/18/21 5:29 PM, o...@ocs.cz wrote:
Jan,
as always, I might be missing something of importance, but I believe a
Closure does not /have/ a return type at all (or, more precisely, the
return type of all Closures is, by definition, Object).
After all, is there a way to define a closure which returns a
non-object, say, int? I think not.
All the best,
OC
On 18. 1. 2021, at 9:55 AM, Jan Lukavský <je...@seznam.cz
<mailto:je...@seznam.cz>> wrote:
Hi,
resending this to dev@ (originally users@). Would anyone know if what
I'm trying to achieve is possible? I think the compiler has enough
information and (using either @TypeChecked or @CompileStatic) it
should be possible to get the return type of Closure at runtime.
Thanks for any comments,
Jan
On 1/12/21 10:36 AM, Jan Lukavský wrote:
Hi,
I'm struggling with something I believe should be possible - when a
Closure is parsed at runtime, it should be possible to retrieve its
generic return type.
I have the following (in Java):
@Test
public void testClosureReturnTypeExtraction() {
String script = "def a = { 1L }";
Closure<?> closure = (Closure<?>) compile(script).run();
Class<?> returnType = retrieveReturnTypeFrom(closure); //
how to implement this??
assertEquals(Long.class, returnType);
}
What I cannot figure out is how to extract the type information from
the generated closure. I believe the type information should be
there (or at least it should be possible to put it there). So far,
my best attempt was, that I got that the type argument is "V". :-)
Any pointers would be appreciated.
Cheers,
Jan