I have just begun to use Java 8 and I am wondering if there is a way to write a method that returns a Function
?
Right now I have method like below:
Function<Integer, String> getMyFunction() {
return new Function<Integer, String>() {
@Override public String apply(Integer integer) {
return "Hello, world!"
}
}
}
Is there a way to write that more succinctly in Java 8? I was hoping this would work but it does not:
Function<Integer, String> getMyFunction() {
return (it) -> { return "Hello, world: " + it }
}
You are missing semi colons:
Although as noted it can be shortened to:
You could write it simply like that:
So, the answer for 99% of the cases has been given by @assylias
Yet, I think that it's worth it to add that, if you want to assign your lambda to a variable (to use later). You can do so by typing:
And then you can easily use it, one example of such a use:
Given, things can be even made simpler if the
Wrapp.withTransaction()
method accepts the same kind of Callable's as parameters. (I use this for JPA atm)Get rid of your return statement inside of your function definition:
I would like to point out that it might be more appropriate to use the built-in
IntFunction
in this case:IntFunction
is a part of the standard API for functional interfaces which defines a range of good to have interfaces, mostly related to Java primitives.