All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ehrbase.util.Lazy Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2024 vitasystems GmbH.
 *
 * This file is part of project EHRbase
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.ehrbase.util;

import java.util.function.Supplier;

/**
 * Lazy property value that can be used to cache values with "expensive" calculations during first time of access.
 * 
* Usage: *
 * {@code
 *     import static org.ehrbase.util.Lazy.lazy;
 *
 *     class MyClass {
 *
 *         private final Supplier lazyValue = lazy(() -> "some expensive calculated value");
 *
 *         public String getValue() {
 *             return lazyValue.get();
 *         }
 *     }
 * }
 * 
* @param */ public final class Lazy implements Supplier { private V value; // = null private final Supplier supplier; public Lazy(Supplier supplier) { this.supplier = supplier; } @Override public V get() { if (value == null) { value = supplier.get(); } return value; } public static Supplier lazy(Supplier supplier) { return new Lazy(supplier); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy