iteratedexpression.java

来自「RESIN 3.2 最新源码」· Java 代码 · 共 138 行

JAVA
138
字号
/* * Copyright (c) 1998-2003 Caucho Technology -- all rights reserved * * This file is part of Resin(R) Open Source * * Each copy or derived work must preserve the copyright notice and this * notice unmodified. * * Resin Open Source is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Resin Open Source is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty * of NON-INFRINGEMENT.  See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with Resin Open Source; if not, write to the * *   Free Software Foundation, Inc. *   59 Temple Place, Suite 330 *   Boston, MA 02111-1307  USA * * @author Scott Ferguson */package javax.servlet.jsp.jstl.core;import javax.el.*;import java.util.*;import java.lang.reflect.Array;public final class IteratedExpression {  private final ValueExpression _orig;  public IteratedExpression(ValueExpression orig)  {    _orig = orig;  }  public ValueExpression getValueExpression()  {    return _orig;  }  public Object getItem(ELContext context, int i)  {    Object items = _orig.getValue(context);    if (items == null)      return null;    else if (items instanceof List) {      List list = (List) items;      if (i >= 0 && i < list.size())        return list.get(i);      else        return null;    }    else if (items instanceof Iterable) {      Iterator iter = ((Iterable) items).iterator();      Object value = null;      while (i-- >= 0) {        if (! iter.hasNext())          return null;        value = iter.next();      }      return value;    }    else if (items.getClass().isArray())      return Array.get(items, i);    else if (items instanceof Iterator) {      Iterator iter = (Iterator) items;      Object value = null;      while (i-- >= 0) {        if (! iter.hasNext())          return null;        value = iter.next();      }      return value;    }    else if (items instanceof Enumeration) {      Enumeration e = (Enumeration) items;      Object value = null;      while (i-- >= 0) {        if (! e.hasMoreElements())          return null;        value = e.nextElement();      }      return value;    }    else if (items instanceof Map) {      Iterator iter = ((Map) items).entrySet().iterator();      Object value = null;      while (i-- >= 0) {        if (! iter.hasNext())          return null;        value = iter.next();      }      return value;    }    else      throw new IllegalStateException("unknown items value " + items);  }  public int hashCode()  {    return _orig.hashCode();  }  public boolean equals(Object o)  {    if (this == o)      return true;    else if (! (o instanceof IteratedExpression))      return false;    IteratedExpression expr = (IteratedExpression) o;    return _orig.equals(expr._orig);  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?