Lazy4J
A generic Lazy
class in java
What is it?
A small container class that takes a supplier function and evaluates it at most once, but not before the result is needed.
Lazy
wraps the Supplier
functional interface.
Why?
This is often recurring functionality that should have been provided out of the box by the JDK when lambda's were introduced in Java 8.
Fortunately, it's not very difficult to create, so that's what we did.
Example
A small example of how this class can be used:
public class Example {
private final Lazy<Expensive> expensive = Lazy.lazy(Expensive::create);
}
This declares a lazy expensive
variable without creating an expensive object yet.
Only when get()
is called for the first time, the Expensive.create()
method is called.
All subsequent invocations will return the same instance of Expensive
.
Lazy provides isAvailable
, map
, flatMap
, ifAvailable
functions.
Please refer to the Lazy class documentation for full descriptions.
Getting the class
Add the following dependency to your project or download it directly from github:
Maven
<dependency>
<groupId>nl.talsmasoftware</groupId>
<artifactId>lazy4j</artifactId>
<version>[see maven badge]</version>
</dependency>
Gradle
compile 'nl.talsmasoftware:lazy4j:[see maven-central badge]'
Scala
libraryDependencies += "nl.talsmasoftware" % "lazy4j" % "[see maven-central badge]"