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:
Get rid of your return statement inside of your function definition:
Function<Integer, String> getMyFunction() {
return (it) -> "Hello, world: " + it;
}
So, the answer for 99% of the cases has been given by @assylias
You are missing semi colons:
return (it) -> { return "Hello, world: " + it; }; Although as noted it
can be shortened to:
return it -> "Hello, world: " + it;
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:
Callable<YourClass> findIt = () -> returnInstanceOfYourClass();
And then you can easily use it, one example of such a use:
if(dontNeedzToWrap()) {
return findIt.call();
}
return Wrapp.withTransaction(() -> findIt.call());
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)
I would like to point out that it might be more appropriate to use the built-in IntFunction in this case:
IntFunction<String> getMyFunction() {
return it -> "Hello, world: " + it;
}
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.
You are missing semi colons:
return (it) -> { return "Hello, world: " + it; };
Although as noted it can be shortened to:
return it -> "Hello, world: " + it;
You could write it simply like that:
Function<Integer, String> function = n -> "Hello, world " + n;