> Is it an immutable that the getValue returns the same value for the
> entire lifetime of the object?

I would tend to say 'yes'.

>  else we have the added problem of
> invalidating the cached value etc...

Sure, if we have a setValue method (or any method that affects the value), it
should reset the cache. Why is that a problem?

 
> what is interesting about your example code is that you use a boolean
> and not a compare to null like
> Any specific reason why you did that ?

two reasons: 
1) in case -as you suggested- null is a valid value (like you,I cannot think of
a good use-case, but you never know).
2) to deal with the exception. Right now the IOE is swallowed, but I imagine
Jerome will want to fix that before  1.0 goes final.


So we could have something like:

private boolean cached = false;
private value = null;
private RuntimeException rte = null;
public String getValue()
        {
                if (!cached)
                {
                    try
                    {
                        value = ByteUtils.toString(getStream());
                        cached = true;
                    }
                    catch (IOException ioe)
                    {
                      rte = new IllegalStateException();
                    }
                }
                if (rte != null)
                {
                   throw rte;
                } 
                return value;
        }
 

Just think aloud here.


-Vincent

Reply via email to