CachedSupplier class

Пакет: com.hypixel.hytale.function.supplier

Файл: com/hypixel/hytale/function/supplier/CachedSupplier.java

implements: Supplier<T>

Поля (2)

МодификаторыТипИмя
final Supplier<T> delegate
Object var2

Методы (7)

МодификаторыВозвратСигнатура
if if(!this.initialized)
if if(!this.initialized)
if if(this.initialized)
if if(this.initialized)
public void invalidatevoid invalidate()
synchronized synchronized(this)
synchronized synchronized(this)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.function.supplier;

class="kw">import java.util.function.Supplier;
class="kw">import javax.annotation.Nullable;

class="kw">public class CachedSupplier<T> class="kw">implements Supplier<T> {
   class="kw">private class="kw">final Supplier<T> delegate;
   class="kw">private class="kw">transient class="kw">volatile boolean initialized;
   @Nullable
   class="kw">private class="kw">transient T value;

   class="kw">public CachedSupplier(Supplier<T> var1) {
      this.delegate = var1;
   }

   @Nullable
   @Override
   class="kw">public T get() {
      if (!this.initialized) {
         class="kw">synchronized (this) {
            if (!this.initialized) {
               Object var2 = this.delegate.get();
               this.value = var2;
               this.initialized = true;
               class="kw">return var2;
            }
         }
      }

      class="kw">return this.value;
   }

   @Nullable
   class="kw">public T getValue() {
      class="kw">return this.value;
   }

   class="kw">public void invalidate() {
      if (this.initialized) {
         class="kw">synchronized (this) {
            if (this.initialized) {
               this.value = null;
               this.initialized = false;
            }
         }
      }
   }
}