/** * Given an iterable object (which may be a iterator, iterable, primitive * or reference array), return an iterator over its (possibly boxed) elements. * * @param iterable the iterable-like * @return an iterator of the given array's elements */ @SuppressWarnings("unchecked") public static Iterator<Object> of(Object iterable) { if (iterable == null) { throw new IllegalArgumentException("can't iterate null"); } if (iterable instanceof Iterator<?>) { return (Iterator<Object>) iterable; } else if (iterable instanceof Iterable<?>) { return ((Iterable<Object>) iterable).iterator(); } Class<?> klass = iterable.getClass(); if (!klass.isArray()) { throw new IllegalArgumentException(getTypeWarning(klass)); } if (klass.getComponentType().isPrimitive()) { return new PrimitiveArrayIterator(iterable); } return Arrays.asList((Object[]) iterable).iterator(); }
@Override public Object next() { if (hasNext()) { return Array.get(arr, index++); } else { throw new NoSuchElementException("only " + size + " elements available"); } }
/** * Given an iterable object (which may be a iterator, iterable, primitive * or reference array), return an iterator over its (possibly boxed) elements. * * @return an iterator of the given array's elements */ @SuppressWarnings("unchecked") public static Iterator<Object> of(Object iterable) { if (iterable == null) { throw new IllegalArgumentException("can't iterate null"); } if (iterable instanceof Iterator<?>) { return (Iterator<Object>) iterable; } else if (iterable instanceof Iterable<?>) { return ((Iterable<Object>) iterable).iterator(); } Class<? extends Object> klass = iterable.getClass(); if(!klass.isArray()) { throw new IllegalArgumentException(getTypeWarning(klass)); } if (klass.getComponentType().isPrimitive()) { return new PrimitiveArrayIterator(iterable); } return Arrays.asList((Object[])iterable).iterator(); }
@Override public Object next() { if (hasNext()) { return Array.get(arr, index++); } else { throw new NoSuchElementException("only " + size + " elements available"); } }