daily pastebin goal
41%
SHARE
TWEET

Untitled

a guest Jan 29th, 2018 50 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package ru.whitebox.whiteboxcrm.base;
  2.  
  3. import java8.util.function.Supplier;
  4.  
  5. /**
  6.  * Created by Denis Danilchuk on 17.01.18.
  7.  */
  8.  
  9. public class LazyVal<T> {
  10.  
  11.     private T field;
  12.  
  13.     private final Supplier<T> initializer;
  14.  
  15.     private final T stubVal;
  16.  
  17.     private final Condition initCondition;
  18.  
  19.     public LazyVal(Supplier<T> initializer, Condition initCondition, T stubVal) {
  20.         this.initializer = initializer;
  21.         this.initCondition = initCondition;
  22.         this.stubVal = stubVal;
  23.     }
  24.  
  25.     public LazyVal(Supplier<T> initializer) {
  26.         this(initializer, () -> true, null);
  27.     }
  28.  
  29.     public T get() {
  30.         if (!initCondition.isSatisfied()) {
  31.             return stubVal;
  32.         }
  33.  
  34.         if (field == null) {
  35.             field = initializer.get();
  36.         }
  37.         return field;
  38.     }
  39.  
  40.     public interface Condition {
  41.  
  42.         boolean isSatisfied();
  43.     }
  44. }
RAW Paste Data
Pastebin PRO WINTER Special!
Get 40% OFF Pastebin PRO accounts!
Top