Class Slot<T>
java.lang.Object
jdk.jpackage.internal.util.Slot<T>
- Type Parameters:
T- value type
A mutable container object for a value.
An alternative to the
An alternative for cases where AtomicReference would be an overkill.
Sample usage:
void foo(MessageNotifier messageNotifier) {
var lastMessage = Slot.createEmpty();
messageNotifier.setListener(msg -> {
lastMessage.set(msg);
}).run();
lastMessage.find().ifPresentOrElse(msg -> {
System.out.println(String.format("The last message: [%s]", msg));
}, () -> {
System.out.println("No messages received");
});
}
abstract class MessageNotifier {
MessageNotifier setListener(Consumer<String> messageConsumer) {
callback = messageConsumer;
return this;
}
void run() {
for (;;) {
var msg = fetchNextMessage();
msg.ifPresent(callback);
if (msg.isEmpty()) {
break;
}
}
}
abstract Optional<String> fetchNextMessage();
private Consumer<String> callback;
}
Slot would be either
AtomicReference or a single-element String[] or any other
suitable container type. AtomicReference would be an overkill if
thread-safety is not a concern and the use of other options would be
confusing.-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
Slot
public Slot()
-
-
Method Details
-
createEmpty
-
get
-
find
-
set
-