ADD week 5
This commit is contained in:
		
							
								
								
									
										59
									
								
								02-Easy5/E5/sources/kotlin/SynchronizedLazyImpl.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								02-Easy5/E5/sources/kotlin/SynchronizedLazyImpl.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | ||||
| package kotlin; | ||||
|  | ||||
| import java.io.Serializable; | ||||
| import kotlin.jvm.functions.Function0; | ||||
| import kotlin.jvm.internal.DefaultConstructorMarker; | ||||
| import kotlin.jvm.internal.Intrinsics; | ||||
|  | ||||
| /* compiled from: LazyJVM.kt */ | ||||
| @Metadata(d1 = {"\u00000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0000\n\u0002\b\u0006\n\u0002\u0010\u000b\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0002\b\u0002\u0018\u0000*\u0006\b\u0000\u0010\u0001 \u00012\b\u0012\u0004\u0012\u0002H\u00010\u00022\u00060\u0003j\u0002`\u0004B\u001f\u0012\f\u0010\u0005\u001a\b\u0012\u0004\u0012\u00028\u00000\u0006\u0012\n\b\u0002\u0010\u0007\u001a\u0004\u0018\u00010\b¢\u0006\u0002\u0010\tJ\b\u0010\u000e\u001a\u00020\u000fH\u0016J\b\u0010\u0010\u001a\u00020\u0011H\u0016J\b\u0010\u0012\u001a\u00020\bH\u0002R\u0010\u0010\n\u001a\u0004\u0018\u00010\bX\u0082\u000e¢\u0006\u0002\n\u0000R\u0016\u0010\u0005\u001a\n\u0012\u0004\u0012\u00028\u0000\u0018\u00010\u0006X\u0088\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u0007\u001a\u00020\bX\u0082\u0004¢\u0006\u0002\n\u0000R\u0014\u0010\u000b\u001a\u00028\u00008VX\u0096\u0004¢\u0006\u0006\u001a\u0004\b\f\u0010\r¨\u0006\u0013"}, d2 = {"Lkotlin/SynchronizedLazyImpl;", "T", "Lkotlin/Lazy;", "Ljava/io/Serializable;", "Lkotlin/io/Serializable;", "initializer", "Lkotlin/Function0;", "lock", "", "(Lkotlin/jvm/functions/Function0;Ljava/lang/Object;)V", "_value", "value", "getValue", "()Ljava/lang/Object;", "isInitialized", "", "toString", "", "writeReplace", "kotlin-stdlib"}, k = 1, mv = {1, 8, 0}, xi = 48) | ||||
| /* loaded from: classes.dex */ | ||||
| final class SynchronizedLazyImpl<T> implements Lazy<T>, Serializable { | ||||
|     private volatile Object _value; | ||||
|     private Function0<? extends T> initializer; | ||||
|     private final Object lock; | ||||
|  | ||||
|     public SynchronizedLazyImpl(Function0<? extends T> initializer, Object obj) { | ||||
|         Intrinsics.checkNotNullParameter(initializer, "initializer"); | ||||
|         this.initializer = initializer; | ||||
|         this._value = UNINITIALIZED_VALUE.INSTANCE; | ||||
|         this.lock = obj == null ? this : obj; | ||||
|     } | ||||
|  | ||||
|     public /* synthetic */ SynchronizedLazyImpl(Function0 function0, Object obj, int i, DefaultConstructorMarker defaultConstructorMarker) { | ||||
|         this(function0, (i & 2) != 0 ? null : obj); | ||||
|     } | ||||
|  | ||||
|     @Override // kotlin.Lazy | ||||
|     public T getValue() { | ||||
|         T t; | ||||
|         T t2 = (T) this._value; | ||||
|         if (t2 != UNINITIALIZED_VALUE.INSTANCE) { | ||||
|             return t2; | ||||
|         } | ||||
|         synchronized (this.lock) { | ||||
|             t = (T) this._value; | ||||
|             if (t == UNINITIALIZED_VALUE.INSTANCE) { | ||||
|                 Function0<? extends T> function0 = this.initializer; | ||||
|                 Intrinsics.checkNotNull(function0); | ||||
|                 t = function0.invoke(); | ||||
|                 this._value = t; | ||||
|                 this.initializer = null; | ||||
|             } | ||||
|         } | ||||
|         return t; | ||||
|     } | ||||
|  | ||||
|     @Override // kotlin.Lazy | ||||
|     public boolean isInitialized() { | ||||
|         return this._value != UNINITIALIZED_VALUE.INSTANCE; | ||||
|     } | ||||
|  | ||||
|     public String toString() { | ||||
|         return isInitialized() ? String.valueOf(getValue()) : "Lazy value not initialized yet."; | ||||
|     } | ||||
|  | ||||
|     private final Object writeReplace() { | ||||
|         return new InitializedLazyImpl(getValue()); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user