Sure, this is theoretically possible (though many functional interfaces aren't annotated), but the convenience I'm asking about would have to be compile-time, because it would depend on the declared type (which is part of why I suspect it might not even make semantic sense in the underlying dynamic model).
On Thu, Apr 29, 2021, 08:24 Rachel Greenham <rac...@merus.eu> wrote: > Sorry if I might be teaching people to suck eggs, but you can discover the > functional method of a functional interface through reflection. It’s a bit > of a lookup but presumably in groovy the results of such lookups do get > cached... > > I use (reassembled from something that’s a bit more broken up than this): > > Optional.of(Function.class) > .filter(Class::isInterface) > .filter(c -> c.isAnnotationPresent(FunctionalInterface.class)) > .stream() > .flatMap(c -> Arrays.stream(c.getMethods())) > .filter(Predicate.not(Method::isDefault) > .and(m -> !Modifier.isStatic(m.getModifiers()))) > .findFirst() > .map(Method::getName); > > << Optional[public abstract java.lang.Object > java.util.function.Function.apply(java.lang.Object)] > > Modify to allow any interface as long as it has only one abstract method > by, instead of the .findFirst(), go to a list or array and only use it if > it’s exactly one entry long. > > -- > Rachel Greenham > rac...@merus.eu > > > > > On 29 Apr 2021, at 12:46, Christopher Smith <chry...@gmail.com> wrote: > > > > That option is not available when using, for example, > java.util.function.Function. > > > > On Thu, Apr 29, 2021, 03:34 Angelo Schneider < > angelo.schnei...@oomentor.de> wrote: > > Is that not already covered by the call() - method? > > I mean the option to declare a method called `Object call(args)´ > > Best Regards > > Angelo > > > > --- > > Angelo Schneider > > angelo.schnei...@oomentor.de > > +49 172 9873893 > > > > > Am 29.04.2021 um 02:47 schrieb Christopher Smith < > chrylis+gro...@gmail.com>: > > > > > > It would be convenient to be able to use the convention of "use > > > parentheses on a function-like object" with functional interfaces; for > > > example, if a variable is declared as type Function, to have > > > `myVar(3)` run `myVar.apply(3)`. Is there any chance this would be > > > practical, or would its semantics be limited sufficiently by the > > > default-dynamic nature of Groovy to not add value? > > > > > > (I have in mind Groovy's tendency to do runtime switcheroos with > > > anything that implements Map as a counterexample, but that may be > > > beside the point.) > > > >