001package org.clafer.collection;
002
003import org.clafer.common.Check;
004
005/**
006 * @param <T> the type of maybe
007 * @author jimmy
008 */
009public class Just<T> extends Maybe<T> {
010
011    private final T t;
012
013    Just(T t) {
014        this.t = Check.notNull(t);
015    }
016
017    @Override
018    public boolean isNothing() {
019        return false;
020    }
021
022    @Override
023    public boolean isJust() {
024        return true;
025    }
026
027    @Override
028    public T fromMaybe(T t) {
029        return this.t;
030    }
031
032    public T get() {
033        return t;
034    }
035
036    @Override
037    public boolean equals(Object obj) {
038        if (obj instanceof Just<?>) {
039            Just<?> other = (Just<?>) obj;
040            return t.equals(other.t);
041        }
042        return false;
043    }
044
045    @Override
046    public int hashCode() {
047        return 934 ^ t.hashCode();
048    }
049
050    @Override
051    public String toString() {
052        return "Just " + t;
053    }
054}