/* * File: ConstantEvaluator.java * Authors: Justin Basilico * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright April 17, 2008, Sandia Corporation. * Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive * license for use of this work by or on behalf of the U.S. Government. Export * of this program may require a license from the United States Government. * See CopyrightHistory.txt for complete details. * */ package gov.sandia.cognition.learning.function; import gov.sandia.cognition.evaluator.Evaluator; import gov.sandia.cognition.util.AbstractCloneableSerializable; /** * The {@code ConstantEvaluator} class implements an {@code Evaluator} that * always returns the same output value. * * @param <OutputType> The output type of the evaluator. * @author Justin Basilico * @since 2.1 */ public class ConstantEvaluator<OutputType> extends AbstractCloneableSerializable implements Evaluator<Object, OutputType> { // TODO: This class should be moved to the evaluator package in Common Core. // -- jdbasil (2010-10-21) /** The output value. */ protected OutputType value; /** * Creates a new {@code ConstantEvaluator}. */ public ConstantEvaluator() { this(null); } /** * Creates a new {@code ConstantEvaluator}. * * @param value The constant output value. */ public ConstantEvaluator( final OutputType value) { super(); this.setValue(value); } /** * Evaluating this object just returns the constant output value. * * @param input The input (ignored). * @return The constant output value. */ public OutputType evaluate( final Object input) { return this.value; } /** * Gets the constant output value for the evaluator. * * @return The constant output value. */ public OutputType getValue() { return this.value; } /** * Sets the constant output value for the evaluator. * * @param value The constant output value. */ public void setValue( final OutputType value) { this.value = value; } /** * Creates a new {@code ConstantEvaluator} for the given value. * * @param <OutputType> * The output type for the evaluator * @param value * The constant to output. * @return * A new {@code ConstantEvaluator} that always returns the given value. */ public static <OutputType> ConstantEvaluator<OutputType> create( final OutputType value) { return new ConstantEvaluator<OutputType>(value); } }