001package conexp.fx.core.collections;
002
003/*
004 * #%L
005 * Concept Explorer FX
006 * %%
007 * Copyright (C) 2010 - 2019 Francesco Kriegel
008 * %%
009 * This program is free software: you can redistribute it and/or modify
010 * it under the terms of the GNU General Public License as
011 * published by the Free Software Foundation, either version 3 of the
012 * License, or (at your option) any later version.
013 * 
014 * This program is distributed in the hope that it will be useful,
015 * but WITHOUT ANY WARRANTY; without even the implied warranty of
016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
017 * GNU General Public License for more details.
018 * 
019 * You should have received a copy of the GNU General Public
020 * License along with this program.  If not, see
021 * <http://www.gnu.org/licenses/gpl-3.0.html>.
022 * #L%
023 */
024
025import java.util.Optional;
026
027public final class Either<L, R> extends Pair<Optional<L>, Optional<R>> {
028
029  public static final <L, R> Either<L, R> ofLeft(final L left) {
030    if (left == null)
031      throw new NullPointerException();
032    return new Either<L, R>(left, null);
033  }
034
035  public static final <L, R> Either<L, R> ofRight(final R right) {
036    if (right == null)
037      throw new NullPointerException();
038    return new Either<L, R>(null, right);
039  }
040
041  private Either(final L left, final R right) {
042    super(Optional.ofNullable(left), Optional.ofNullable(right));
043  }
044
045}