Reflections cannot find lambda implementations of interfaces. Is there
another solution I can use that will work with lambdas?
There is no reliable approach to identify instances of functional interfaces using reflection, and it doesn't look like there ever will be. See this response to an openjdk request to Introduce a compiler option to store generic type information about a lambda expression using the Signature Attribute:
I get why people want reflection to work over lambda instances, but
that's not how reflection works -- reflection reflects over classes,
not instances. The current translation strategy happens to be one
that, were this attribute there, would enable reflection to
"accidentally work" to provide generic information, but this will
change, at which point any reflection-based strategy falls apart (at
which point people accuse of breaking their
should-have-never-worked-in-the-first-place code.)
In a similar vein, see these comments (also from Brian Goetz) in this SO post Why are Java 8 lambdas invoked using invokedynamic?
The runtime implementation is free to select a strategy dynamically to
evaluate the lambda expression. The runtime implementation choice is
hidden behind a standardized (i.e., part of the platform
specification) API for lambda construction, so that the static
compiler can emit calls to this API, and JRE implementations can
choose their preferred implementation strategy.
The bottom line is that you can't know how your lambda expressions will be processed at run time.