From 809c7d688cfb8048b417fa2f1a269e0be7156f3a Mon Sep 17 00:00:00 2001 From: Petr Portnov Date: Sun, 15 Aug 2021 14:55:59 +0300 Subject: [PATCH] chore: use PECS for `Lazy` factories --- .../progrm_jarvis/javacommons/lazy/Lazy.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/java-commons/src/main/java/ru/progrm_jarvis/javacommons/lazy/Lazy.java b/java-commons/src/main/java/ru/progrm_jarvis/javacommons/lazy/Lazy.java index 73de8e8f..cb12f303 100644 --- a/java-commons/src/main/java/ru/progrm_jarvis/javacommons/lazy/Lazy.java +++ b/java-commons/src/main/java/ru/progrm_jarvis/javacommons/lazy/Lazy.java @@ -83,7 +83,7 @@ public interface Lazy extends Supplier { * * @apiNote might be thread-unsafe */ - static Lazy create(final @NonNull Supplier valueSupplier) { + static Lazy create(final @NonNull Supplier valueSupplier) { return new SimpleLazy<>(valueSupplier); } @@ -94,7 +94,7 @@ static Lazy create(final @NonNull Supplier valueSupplier) { * @param type of value wrapped * @return created lazy */ - static Lazy createThreadSafe(final @NonNull Supplier valueSupplier) { + static Lazy createThreadSafe(final @NonNull Supplier valueSupplier) { //noinspection ZeroLengthArrayAllocation: mutex object return new DoubleCheckedLazy<>(new Object[0], valueSupplier); } @@ -110,7 +110,7 @@ static Lazy createThreadSafe(final @NonNull Supplier valueSupplier) { * @apiNote weak lazy stores the value wrapped in weak reference and so it may be GCed * and so the new one might be recomputed using the value supplier */ - static Lazy<@NotNull T> createWeak(final @NonNull Supplier<@NotNull T> valueSupplier) { + static Lazy<@NotNull T> createWeak(final @NonNull Supplier<@NotNull ? extends T> valueSupplier) { return new SimpleWeakLazy<>(valueSupplier, ReferenceUtil.weakReferenceToNull()); } @@ -124,7 +124,7 @@ static Lazy createThreadSafe(final @NonNull Supplier valueSupplier) { * @apiNote weak lazy stores the value wrapped in weak reference and so it may be GCed * and so the new one might be recomputed using the value supplier */ - static Lazy createWeakThreadSafe(final @NonNull Supplier valueSupplier) { + static Lazy createWeakThreadSafe(final @NonNull Supplier valueSupplier) { final ReadWriteLock lock; return new LockingWeakLazy<>( (lock = new ReentrantReadWriteLock()).readLock(), lock.writeLock(), @@ -139,7 +139,7 @@ static Lazy createWeakThreadSafe(final @NonNull Supplier valueSupplier * @param type of value wrapped * @return created lazy */ - static Lazy createThreadLocal(final @NonNull Supplier valueSupplier) { + static Lazy createThreadLocal(final @NonNull Supplier valueSupplier) { return new ThreadLocalLazy<>(valueSupplier, ThreadLocal.withInitial(() -> ThreadLocalLazy.UNSET_VALUE)); } @@ -155,14 +155,14 @@ final class SimpleLazy implements Lazy { /** * Supplier used for creation of the value */ - @Nullable Supplier<@Nullable T> valueSupplier; + @Nullable Supplier valueSupplier; /** * The value stored */ T value; - private SimpleLazy(final @NotNull Supplier valueSupplier) { + private SimpleLazy(final @NotNull Supplier valueSupplier) { this.valueSupplier = valueSupplier; } @@ -209,7 +209,7 @@ final class DoubleCheckedLazy implements Lazy { /** * Supplier used for creation of the value */ - @Nullable volatile Supplier valueSupplier; + @Nullable volatile Supplier valueSupplier; /** * The value stored @@ -222,7 +222,7 @@ final class DoubleCheckedLazy implements Lazy { * @param mutex mutex to be used for synchronization * @param valueSupplier supplier used for creation of the value */ - private DoubleCheckedLazy(final @NotNull Object mutex, final @NotNull Supplier valueSupplier) { + private DoubleCheckedLazy(final @NotNull Object mutex, final @NotNull Supplier valueSupplier) { this.mutex = mutex; this.valueSupplier = valueSupplier; } @@ -230,7 +230,7 @@ private DoubleCheckedLazy(final @NotNull Object mutex, final @NotNull Supplier valueSupplier; + final Supplier valueSupplier; if ((valueSupplier = this.valueSupplier) != null) { val value = this.value = valueSupplier.get(); this.valueSupplier = null; @@ -283,7 +283,7 @@ final class SimpleWeakLazy<@NotNull T> implements Lazy { /** * Supplier used for creation of the value */ - final @NotNull Supplier<@NotNull T> valueSupplier; + final @NotNull Supplier<@NotNull ? extends T> valueSupplier; /** * The value stored wrapped in {@link WeakReference} @@ -339,7 +339,7 @@ final class LockingWeakLazy implements Lazy<@NotNull T> { /** * Supplier used for creation of the value */ - @NotNull Supplier valueSupplier; + @NotNull Supplier valueSupplier; /** * The value stored wrapped in {@link WeakReference} @@ -417,7 +417,7 @@ class ThreadLocalLazy implements Lazy { /** * Supplier used for creation of the value */ - @NotNull Supplier valueSupplier; + @NotNull Supplier valueSupplier; /** * The value stored wrapped in {@link ThreadLocal}