package org.voxe.android.data; public class TaskResult<T> { public static <T> TaskResult<T> fromResult(T result) { return new TaskResult<T>(result); } public static <T> TaskResult<T> fromException(Exception e) { return new TaskResult<T>(e); } private final Object resultOrException; private final boolean isResult; private TaskResult(T result) { resultOrException = result; isResult = true; } private TaskResult(Exception exception) { resultOrException = exception; isResult = false; } public boolean isException() { return !isResult; } public boolean isResult() { return isResult; } @SuppressWarnings("unchecked") public T asResult() { return (T) resultOrException; } public Exception asException() { return (Exception) resultOrException; } }