Реализация по умолчанию общего ссылочного класса в Java
Есть ли какой-нибудь шаблон для написания простого класса-держателя в Java
или, что еще лучше, повторно использовать существующую реализацию?
java.xml.ws.Holder
класс выставляет свою ценность через публичное поле и java.util.Optional
не поддерживает установку значений после инициализации. Лучшим подходом может быть реализация Supplier<T>
интерфейс с дополнительным set()
метод, например
public class SimpleSupplier implements Supplier<T> {
private T value;
public SimpleSupplier(T value) {
this.value = value;
}
public T get() {
return this.value;
}
public final void set(T value) {
this.value = value;
}
}
Такой класс, в некотором смысле, будет противоположностью AtomicReference
класс, просто для хранения ссылки неатомарным способом. Что в этом случае будет хорошим соглашением об именах? SharedReference
, может быть?
Типичный пример прохождения Consumer<T>
Объект с помощью лямбда-выражения:
Optional<T> holder = ... // Calculate an optional value
AtomicReference<T> ref = new AtomicReference<T>();
holder.ifPresent(ref -> {
// Do something and update ref
});
T value = ref.get();