View Javadoc

1   ////////////////////////////////////////////////////////////////////////////////
2   // MillScript: an Open Spice interpreter and batch website creation tool
3   // Copyright (C) 2004 Kevin Rogers
4   //
5   // This file is part of MillScript.
6   //
7   // MillScript is free software; you can redistribute it and/or modify it under
8   // the terms of the GNU General Public License as published by the Free
9   // Software Foundation; either version 2 of the License, or (at your option)
10  // any later version.
11  //
12  // MillScript is distributed in the hope that it will be useful, but WITHOUT
13  // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14  // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
15  // more details.
16  //
17  // You should have received a copy of the GNU General Public License along with
18  // MillScript; if not, write to the Free Software Foundation, Inc., 59 Temple
19  // Place, Suite 330, Boston, MA  02111-1307  USA
20  ////////////////////////////////////////////////////////////////////////////////
21  package org.millscript.millscript.datatypes;
22  
23  
24  /**
25   * This is the parent of all deferred objects. A deferred object is one whose
26   * value is unknown until the variable is used.
27   */
28  public abstract class Deferred< T > {
29  
30      /**
31       * Returns the value associated with this deferred object. If the deferred
32       * value hasn't already been calculated, the <code>calculate</code> method
33       * should be called to do that.
34       *
35       * @return  the value of this deferred object.
36       */
37      public abstract T get();
38  
39      /**
40       * Returns the string representation of this deferred object. This will
41       * cause the defered object to be calculated and the deferred values string
42       * representation will be returned.
43       *
44       * @return  a String containing a representation of this deferred object
45       */
46      @Override
47      public final String toString() {
48          return String.valueOf( this.get() );
49      }
50  
51  }