All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.magicwerk.brownies.collections.helper.Option Maven / Gradle / Ivy

Go to download

Brownies Collections complements the Java Collections Framework. GapList combines the strengths of both ArrayList and LinkedList. BigList is a list optimized for storing large number of elements. There are specialized List implementations for all primitive data types (IntGapList, IntBigList, IntObjGapList, IntObjBigList). The key collection classes offer support for keys and constraints for lists and collections (KeyList, KeyCollection, KeySet, Key1List, Key1Collection, Key1Set, Key2List, Key2Collection, Key2Set).

There is a newer version: 0.9.3
Show newest version
/*
 * Copyright 2013 by Thomas Mauch
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * $Id: Option.java 2549 2014-10-28 20:39:05Z origo $
 */
package org.magicwerk.brownies.collections.helper;

/**
 * The Option class allows to distinguish between a null value and no value.
 *
 * @param 	element type
 *
 * @author Thomas Mauch
 * @version $Id: Option.java 2549 2014-10-28 20:39:05Z origo $
 */
public class Option {
    @SuppressWarnings("rawtypes")
	private static final Option EMPTY = new Option();

    /**
     * @return unmodifiable empty instance
     */
    @SuppressWarnings("unchecked")
    public static  Option EMPTY() {
        return EMPTY;
    }

	private boolean hasValue;
	private T value;


	/**
	 * Prevent construction (use EMPTY)
	 */
	private Option() {
	}

	public Option(T value) {
		this.hasValue = true;
		this.value = value;
	}

	public boolean hasValue() {
		return hasValue;
	}

	public T getValueOrNull() {
		return value;
	}

	/**
	 * Returns stored value.
	 * If no value is stored, an exception is thrown.
	 *
	 * @return stored value
	 * @throws IllegalArgumentException if no value is stored
	 */
	public T getValue() {
		if (!hasValue) {
			throw new IllegalArgumentException("No value stored");
		}
		return value;
	}

	@Override
	public String toString() {
		return "Option [hasValue=" + hasValue + ", value=" + value + "]";
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy