@Override @Nullable protected V execute(@Nullable Reference<K, V> ref, @Nullable Entry<K, V> entry) { if (entry != null) { if (ref != null) { ref.release(); } return entry.value; } return null; } });
@Override protected Boolean execute(@Nullable Reference<K, V> ref, @Nullable Entry<K, V> entry) { if (entry != null && ObjectUtils.nullSafeEquals(entry.getValue(), value)) { if (ref != null) { ref.release(); } return true; } return false; } });
@Override @Nullable protected V execute(@Nullable Reference<K, V> ref, @Nullable Entry<K, V> entry) { if (entry != null) { if (ref != null) { ref.release(); } return entry.value; } return null; } });
/** * A task that can be {@link Segment#doTask run} against a {@link Segment}. */ private abstract class Task<T> { private final EnumSet<TaskOption> options; public Task(TaskOption... options) { this.options = (options.length == 0 ? EnumSet.noneOf(TaskOption.class) : EnumSet.of(options[0], options)); } public boolean hasOption(TaskOption option) { return this.options.contains(option); } /** * Execute the task. * @param ref the found reference (or {@code null}) * @param entry the found entry (or {@code null}) * @param entries access to the underlying entries * @return the result of the task * @see #execute(Reference, Entry) */ @Nullable protected T execute(@Nullable Reference<K, V> ref, @Nullable Entry<K, V> entry, @Nullable Entries entries) { return execute(ref, entry); } /** * Convenience method that can be used for tasks that do not need access to {@link Entries}.
@Override @Nullable protected V execute(@Nullable Reference<K, V> ref, @Nullable Entry<K, V> entry) { if (entry != null) { if (ref != null) { ref.release(); } return entry.value; } return null; } });
@Override @Nullable protected V execute(@Nullable Reference<K, V> ref, @Nullable Entry<K, V> entry) { if (entry != null) { if (ref != null) { ref.release(); } return entry.value; } return null; } });
@Override @Nullable protected V execute(@Nullable Reference<K, V> reference, @Nullable Entry<K, V> entry) { if (entry != null) { if (reference != null) { reference.release(); } return entry.value; } return null; } });
@Override protected Boolean execute(@Nullable Reference<K, V> ref, @Nullable Entry<K, V> entry) { if (entry != null && ObjectUtils.nullSafeEquals(entry.getValue(), value)) { if (ref != null) { ref.release(); } return true; } return false; } });
@Override protected Boolean execute(@Nullable Reference<K, V> reference, @Nullable Entry<K, V> entry) { if (entry != null && ObjectUtils.nullSafeEquals(entry.getValue(), value)) { if (reference != null) { reference.release(); } return true; } return false; } });
@Override protected Boolean execute(@Nullable Reference<K, V> ref, @Nullable Entry<K, V> entry) { if (entry != null && ObjectUtils.nullSafeEquals(entry.getValue(), value)) { if (ref != null) { ref.release(); } return true; } return false; } });