|
1 | 1 | package org.tron.common.utils; |
2 | 2 |
|
| 3 | +import java.util.Optional; |
3 | 4 | import org.tron.core.db.AbstractRevokingStore.Dialog; |
4 | 5 |
|
5 | | -import java.util.Optional; |
| 6 | +public final class DialogOptional { |
6 | 7 |
|
7 | | -public class DialogOptional<T extends Dialog> { |
8 | | - private static final DialogOptional<?> EMPTY = new DialogOptional<>(); |
| 8 | + private static final DialogOptional INSTANCE = OptionalEnum.INSTANCE.getInstance(); |
9 | 9 |
|
10 | | - private Optional<T> value; |
| 10 | + private Optional<Dialog> value; |
11 | 11 |
|
12 | 12 | private DialogOptional() { |
13 | 13 | this.value = Optional.empty(); |
14 | 14 | } |
15 | 15 |
|
16 | | - public static <T extends Dialog> DialogOptional<T> empty() { |
17 | | - @SuppressWarnings("unchecked") |
18 | | - DialogOptional<T> t = (DialogOptional<T>) EMPTY; |
19 | | - return t; |
| 16 | + public synchronized DialogOptional setValue(Dialog value) { |
| 17 | + if (!this.value.isPresent()) { |
| 18 | + this.value = Optional.of(value); |
| 19 | + } |
| 20 | + return this; |
20 | 21 | } |
21 | 22 |
|
22 | | - private DialogOptional(T value) { |
23 | | - this.value = Optional.of(value); |
| 23 | + public synchronized boolean valid() { |
| 24 | + return value.isPresent(); |
24 | 25 | } |
25 | 26 |
|
26 | | - public static <T extends Dialog> DialogOptional<T> of(T value) { |
27 | | - return new DialogOptional<>(value); |
| 27 | + public synchronized void reset() { |
| 28 | + value.ifPresent(Dialog::destroy); |
| 29 | + value = Optional.empty(); |
28 | 30 | } |
29 | 31 |
|
30 | | - public static <T extends Dialog> DialogOptional<T> ofNullable(T value) { |
31 | | - return value == null ? empty() : of(value); |
| 32 | + public static DialogOptional instance() { |
| 33 | + return INSTANCE; |
32 | 34 | } |
33 | 35 |
|
34 | | - public boolean valid() { |
35 | | - return value.isPresent(); |
36 | | - } |
| 36 | + private enum OptionalEnum { |
| 37 | + INSTANCE; |
37 | 38 |
|
38 | | - public void reset() { |
39 | | - value.ifPresent(Dialog::destroy); |
40 | | - value = Optional.empty(); |
| 39 | + private DialogOptional instance; |
| 40 | + |
| 41 | + OptionalEnum() { |
| 42 | + instance = new DialogOptional(); |
| 43 | + } |
| 44 | + |
| 45 | + private DialogOptional getInstance() { |
| 46 | + return instance; |
| 47 | + } |
41 | 48 | } |
| 49 | + |
42 | 50 | } |
0 commit comments