Adam,

Actually the reason for the switch to List versus Iterable would be for general convenience of developers consuming the api (with efficiency a much smaller issue).

Which methods on java.util.List do you think are providing too broad of a contract? Do you believe that returning a List is limiting the implementations choices severely enough that it outweighs the convenience of using a Collection class?

-- Blake Sullivan



Jeanne Waldman wrote:
three out of six

-------- Original Message --------
Subject:     Re: return an Iterator vs a List
Date:     Wed, 4 Apr 2007 15:42:17 -0700
From:     Adam Winer <[EMAIL PROTECTED]>
Reply-To:     adffaces-dev@incubator.apache.org
To:     adffaces-dev@incubator.apache.org
References: <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]>



If the only reason is to enable the fun new "for" syntax,
then we should change the type from Iterator to Iterable,
instead of List.  List is a much larger contract.

-- Adam


On 3/28/07, Jeanne Waldman <[EMAIL PROTECTED]> wrote:
Hi there,
I'm in the Skinning StyleNode code and I see that the 'get' methods
return Iterators
from the good ol' days.
It seems to me that it is better if they just return Lists so the code
that iterates over
the values is cleaner using 5.0's for(String foo : yyy) construct.
Does anyone see why I wouldn't want these to return List instead of
Iterator?

Here's a code snippet. Thanks, Jeanne
--

  public Iterator<IncludePropertyNode> getIncludedProperties()
  {
    if(_includedProperties == null)
    {
      List<IncludePropertyNode> list = Collections.emptyList();
      return list.iterator();
    }
    else
      return (Arrays.asList(_includedProperties)).iterator();
  }

  /**
   * Gets the properties specified by this node's parent that should be
   * ignored. This method will return an empty iterator if
   * [EMAIL PROTECTED] #isInhibitingAll()} returns <code>true</code>
   *
   * @return an iterator over the properties that should be ignored, an
   *         empty iterator if all properties should be.
   */
  public Iterator<String> getInhibitedProperties()
  {
    if(_inhibitedProperties == null)
    {
      List<String> list = Collections.emptyList();
      return list.iterator();
    }
    else
    {
      return _inhibitedProperties.iterator();
    }
  }



Reply via email to