Add FunctionalInterface Annotation to most of the interfaces primarily used by Lambdas #19234
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
A lot of the Kafka Stream documentation makes liberal use of Java lambdas, which is fine. The FunctionalInterface annotation isn't strictly required for Java to do this, as Java will automatically coerce, however this breaks the lambda syntax in Clojure 1.12, as it needs the FunctionalInterface in order to coerce a Clojure function into a Java lambda.
As far as I can tell, there's no reason not to have the FunctionalInterface annotation in all the places that regularly use the lambda syntax, and this annotation would make it more clear, as well as make it easier to user in other JVM languages.