Я хочу написать класс с более чем 1 полем различных типов, но в любое время есть одно и только одно поле объекта экземпляра, имеющее ненулевое значение.
То, что я сделал до сих пор, не выглядит действительно чистым.
class ExclusiveField {
private BigInteger numericParam;
private String stringParam;
private LocalDateTime dateParam;
public void setNumericParam(BigInteger numericParam) {
unsetAll();
this.numericParam = Objects.requireNonNull(numericParam);
}
public void setStringParam(String stringParam) {
unsetAll();
this.stringParam = Objects.requireNonNull(stringParam);
}
public void setDateParam(LocalDateTime dateParam) {
unsetAll();
this.dateParam = Objects.requireNonNull(dateParam);
}
private void unsetAll() {
this.numericParam = null;
this.stringParam = null;
this.dateParam = null;
}
}
Java как-то поддерживает этот шаблон или есть более приличный способ сделать это?