Just playing with the new lambda and functional features in Java 8 and I'm not sure how to do this.
For example the following is valid:
Map<String, Integer> map = new HashMap<>(); map.put("A", 1); map.put("B", 2); map.put("C", 3); map.compute("A", (k, v) -> v == null ? 42 : v + 41));
but the following gives me syntax errors:
BiFunction x = (k, v) -> v == null ? 42 : v + 41; map.compute("A", x);
Any ideas?
Using Lambda ExpressionsLambda expressions can be stored in variables if the variable's type is an interface which has only one method. The lambda expression should have the same number of parameters and the same return type as that method.
Creating a Lambda Function The lambda operator cannot have any statements and it returns a function object that we can assign to any variable.
You can invoke a Lambda function by creating an AWSLambda object and invoking its invoke method. Create an InvokeRequest object to specify additional information such as the function name and the payload to pass to the Lambda function.
You have forgotten the generics on your BiFunction
:
public static void main(final String[] args) throws Exception { final Map<String, Integer> map = new HashMap<>(); map.put("A", 1); map.put("B", 2); map.put("C", 3); final BiFunction<String, Integer, Integer> remapper = (k, v) -> v == null ? 42 : v + 41; map.compute("A", remapper); }
Running:
PS C:\Users\Boris> java -version java version "1.8.0-ea" Java(TM) SE Runtime Environment (build 1.8.0-ea-b120) Java HotSpot(TM) 64-Bit Server VM (build 25.0-b62, mixed mode)
As Boris The Spider points out, the specific problem you have is the generics. Depending on context, adding an explicit {} block around the lambda will help add clarity and may be required.
With that, you would get something like:
BiFunction<String, Integer, Integer> x = (String k, Integer v) -> {v == null ? 42 : v + 41};
It would be pretty helpful for future readers who have the same problem if you posted your syntax errors so they can be indexed.
This link has some additional examples that might help.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With