Package com.sun.jna.platform.win32.COM

## Class IComEnumVariantIterator

- java.lang.Object
- - com.sun.jna.platform.win32.COM.IComEnumVariantIterator

All Implemented Interfaces:
  `java.io.Closeable`, `java.lang.AutoCloseable`, `java.lang.Iterable<Variant.VARIANT>`, `java.util.Iterator<Variant.VARIANT>`

    public class IComEnumVariantIterator
    extends java.lang.Object
    implements java.lang.Iterable<Variant.VARIANT>, java.util.Iterator<Variant.VARIANT>, java.io.Closeable

Wrapper for an EnumVariant Iteration. The usecase is a for-loop in the style:

     // Aquire an IDispatch, that has a new NewEnum Property (DISPID_NEWENUM)
     for(VARIANT v: IComEnumVariantIterator.wrap(dispatch)) {
          // Work with the acquired Variant
          // ...
          // Finally free it
          OleAuto.INSTANCE.VariantClear(v);
     }

The `IComEnumVariantIterator` iterator closes the enumeration it wraps after the enumeration is exhausted or when the iterator is GCed, whatever happens earlier.

### Constructor Summary

Constructors
`IComEnumVariantIterator​(EnumVariant backingIteration)` IComEnumVariantIterator wraps the supplied EnumVariant and exposes that as an `Iterable<Variant.VARIANT>`/`Iterator<Variant.VARIANT>`.

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`void` `close()`
`protected void` `finalize()`
`boolean` `hasNext()`
`java.util.Iterator<Variant.VARIANT>` `iterator()`
`Variant.VARIANT` `next()`
`void` `remove()`
`static IComEnumVariantIterator` `wrap​(IDispatch dispatch)` Helper to get new enumeration from an `IDispatch`.

### Methods inherited from class java.lang.Object

`clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface java.lang.Iterable

`forEach, spliterator`

### Methods inherited from interface java.util.Iterator

`forEachRemaining`

### Constructor Detail

#### IComEnumVariantIterator

    public IComEnumVariantIterator​(EnumVariant backingIteration)

IComEnumVariantIterator wraps the supplied EnumVariant and exposes that as an `Iterable<Variant.VARIANT>`/`Iterator<Variant.VARIANT>`. The class takes possion of the supplied EnumVariant. So the EnumVariant is Released when the enumeration is exhausted or the Iterator is GCed.

Parameters:
  `backingIteration` -

### Method Detail

#### wrap

    public static IComEnumVariantIterator wrap​(IDispatch dispatch)

Helper to get new enumeration from an `IDispatch`.

This expects, that the supplied IDispatch has a property identified by a `OaIdl.DISPID` of `OaIdl.DISPID_NEWENUM`

Parameters:
  `dispatch` - IDispatch to be analysed
Returns:
  IComEnumVariantIterator wrapping the enumeration queried from the supplied object

#### hasNext

    public boolean hasNext()

Specified by:
  `hasNext` in interface `java.util.Iterator<Variant.VARIANT>`

#### next

    public Variant.VARIANT next()

Specified by:
  `next` in interface `java.util.Iterator<Variant.VARIANT>`

#### close

    public void close()

Specified by:
  `close` in interface `java.lang.AutoCloseable`
Specified by:
  `close` in interface `java.io.Closeable`

#### finalize

    protected void finalize()
                     throws java.lang.Throwable

Overrides:
  `finalize` in class `java.lang.Object`
Throws:
  `java.lang.Throwable`

#### iterator

    public java.util.Iterator<Variant.VARIANT> iterator()

Specified by:
  `iterator` in interface `java.lang.Iterable<Variant.VARIANT>`

#### remove

    public void remove()

Specified by:
  `remove` in interface `java.util.Iterator<Variant.VARIANT>`