Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to correctly determine that an object is a lambda?

I see that the class of a lambda is isSynthetic() && !isLocalOrAnonymousClass(), but I presume that the same may be true for proxy classes.

Of course, I could check that getDeclaredMethods().length == 1 and apply regexp to the class name.

However I want to know if there is a more elegant and robust option to find out if a given object is a lambda.

like image 411
Artem Bilan Avatar asked May 26 '14 12:05

Artem Bilan


People also ask

How is lambda represented?

The HTML 4 character entity references for the Greek capital and small letter lambda are Λ and λ respectively. The Unicode code points for lambda are U+039B and U+03BB.

What are the main characteristics of the lambda function?

The characteristics of lambda functions are: Lambda functions are syntactically restricted to return a single expression. You can use them as an anonymous function inside other functions. The lambda functions do not need a return statement, they always return a single expression.

What is this lambda?

Lambda is a compute service that lets you run code without provisioning or managing servers.

Which is a valid type for this lambda function?

A lambda expression is a function or subroutine without a name that can be used wherever a delegate is valid. Lambda expressions can be functions or subroutines and can be single-line or multi-line. You can pass values from the current scope to a lambda expression. The RemoveHandler statement is an exception.


1 Answers

There is no official way to do this, by design. Lambdas are part of the language; and are integrated into the type system through functional interfaces. There should be no need to distinguish a Runnable that began life as a lambda, a named class, or an inner class -- they're all Runnables. If you think you have to "deal with lambda" by taking apart the class file, you're almost certainly doing something wrong!

like image 187
Brian Goetz Avatar answered Sep 29 '22 03:09

Brian Goetz