com.mapinfo.midev.feature

## Interface IFeature

All Superinterfaces:
  Serializable

All Known Implementing Classes:
  Feature

    public interface IFeature
    extends Serializable

Represents a simple feature.

Refer to the package level documentation for a detailed discussion of the Feature Model.

Note that if `IFeature.isNull(int)` is true, other attribute getters with throw an exception so it is advisable to always call `IFeature.isNull(int)` before getting an attribute value.

A typical pattern for using an `IFeature` is as follows:

    // this assumes there is a getFeature() method returning an IFeature
    IFeature feature = getFeature();
    for (IAttributeDefinition def : feature.getMetadata().getAttributeDefinitions()) {
        String attrName = def.getName();
        if (feature.isNull(attrName)) {
            // do something
        } else {
            switch (def.getDataType()) {
                case BOOLEAN:
                    boolean boolVal = feature.getBoolean(attrName);
                    // do something
                    break;
                case INTEGER:
                    int intVal = feature.getInt(attrName);
                    // do something
                    break;
                // ...
            }
        }
    }

### Method Summary

All Methods Instance Methods Abstract Methods
`byte[]` `getBinary(int index)` Gets the value of the specified attribute.
`byte[]` `getBinary(String name)` Gets the value of the specified attribute.
`boolean` `getBoolean(int index)` Gets the value of the specified attribute.
`boolean` `getBoolean(String name)` Gets the value of the specified attribute.
`byte` `getByte(int index)` Gets the value of the specified attribute.
`byte` `getByte(String name)` Gets the value of the specified attribute.
`char` `getChar(int index)` Gets the value of the specified attribute.
`char` `getChar(String name)` Gets the value of the specified attribute.
`IFeature` `getCopy()` Get a (permanent) copy of this IFeature.
`MIDate` `getDate(int index)` Gets the value of the specified attribute.
`MIDate` `getDate(String name)` Gets the value of the specified attribute.
`MIDateTime` `getDateTime(int index)` Gets the value of the specified attribute.
`MIDateTime` `getDateTime(String name)` Gets the value of the specified attribute.
`MIDateTimeZone` `getDateTimeZone(int index)` Gets the value of the specified attribute.
`MIDateTimeZone` `getDateTimeZone(String name)` Gets the value of the specified attribute.
`String` `getDescription()` Contains a textual description of the feature.
`double` `getDouble(int index)` Gets the value of the specified attribute.
`double` `getDouble(String name)` Gets the value of the specified attribute.
`IFeature` `getFeature(int index)` Gets the value of the specified attribute.
`IFeature` `getFeature(String name)` Gets the value of the specified attribute.
`IFeatureCollection` `getFeatureCollection(int index)` Gets the value of the specified attribute.
`IFeatureCollection` `getFeatureCollection(String name)` Gets the value of the specified attribute.
`IFeatureGeometry` `getFeatureGeometry(int index)` Gets the value of the specified attribute.
`IFeatureGeometry` `getFeatureGeometry(String name)` Gets the value of the specified attribute.
`float` `getFloat(int index)` Gets the value of the specified attribute.
`float` `getFloat(String name)` Gets the value of the specified attribute.
`int` `getInt(int index)` Gets the value of the specified attribute.
`int` `getInt(String name)` Gets the value of the specified attribute.
`IKey` `getKey()` Returns the primary key that represents this IFeature.
`long` `getLong(int index)` Gets the value of the specified attribute.
`long` `getLong(String name)` Gets the value of the specified attribute.
`IFeatureMetadata` `getMetadata()` Accesses the metadata that describes this `IFeature`.
`IMultiFeatureCollection` `getMultiFeatureCollection(int index)` Gets the value of the specified attribute.
`IMultiFeatureCollection` `getMultiFeatureCollection(String name)` Gets the value of the specified attribute.
`Collection` `getNames()` A collection of names used to identify the feature.
`IRasterDataset` `getRasterDataset(int index)` Gets the value of the specified attribute.
`IRasterDataset` `getRasterDataset(String name)` Gets the value of the specified attribute.
`short` `getShort(int index)` Gets the value of the specified attribute.
`short` `getShort(String name)` Gets the value of the specified attribute.
`String` `getString(int index)` Gets the value of the specified attribute.
`String` `getString(String name)` Gets the value of the specified attribute.
`IStyle` `getStyle(int index)` Gets the value of the specified attribute.
`IStyle` `getStyle(String name)` Gets the value of the specified attribute.
`MITime` `getTime(int index)` Gets the value of the specified attribute.
`MITime` `getTime(String name)` Gets the value of the specified attribute.
`MITimespan` `getTimespan(int index)` Gets the value of the specified attribute.
`MITimespan` `getTimespan(String name)` Gets the value of the specified attribute.
`boolean` `isNull(int index)` Indicates if the value of the specified attribute is null.
`boolean` `isNull(String name)` Indicates if the value of the specified attribute is null.
`boolean` `isReadOnly()` Indicates if the attribute values for this feature are read only.
`boolean` `isTransient()` Indicates if this `IFeature` is transient.
`void` `setBinary(int index, byte[] value)` Sets the value of the specified attribute.
`void` `setBinary(String name, byte[] value)` Sets the value of the specified attribute.
`void` `setBoolean(int index, boolean value)` Sets the value of the specified attribute.
`void` `setBoolean(String name, boolean value)` Sets the value of the specified attribute.
`void` `setByte(int index, byte value)` Sets the value of the specified attribute.
`void` `setByte(String name, byte value)` Sets the value of the specified attribute.
`void` `setChar(int index, char value)` Sets the value of the specified attribute.
`void` `setChar(String name, char value)` Sets the value of the specified attribute.
`void` `setDate(int index, MIDate value)` Sets the value of the specified attribute.
`void` `setDate(String name, MIDate value)` Sets the value of the specified attribute.
`void` `setDateTime(int index, MIDateTime value)` Sets the value of the specified attribute.
`void` `setDateTime(String name, MIDateTime value)` Sets the value of the specified attribute.
`void` `setDateTimeZone(int index, MIDateTimeZone value)` Sets the value of the specified attribute.
`void` `setDateTimeZone(String name, MIDateTimeZone value)` Sets the value of the specified attribute.
`void` `setDouble(int index, double value)` Sets the value of the specified attribute.
`void` `setDouble(String name, double value)` Sets the value of the specified attribute.
`void` `setFeature(int index, IFeature value)` Sets the value of the specified attribute.
`void` `setFeature(String name, IFeature value)` Sets the value of the specified attribute.
`void` `setFeatureCollection(int index, IFeatureCollection value)` Sets the value of the specified attribute.
`void` `setFeatureCollection(String name, IFeatureCollection value)` Sets the value of the specified attribute.
`void` `setFeatureGeometry(int index, IFeatureGeometry value)` Sets the value of the specified attribute.
`void` `setFeatureGeometry(String name, IFeatureGeometry value)` Sets the value of the specified attribute.
`void` `setFloat(int index, float value)` Sets the value of the specified attribute.
`void` `setFloat(String name, float value)` Sets the value of the specified attribute.
`void` `setInt(int index, int value)` Sets the value of the specified attribute.
`void` `setInt(String name, int value)` Sets the value of the specified attribute.
`void` `setLong(int index, long value)` Sets the value of the specified attribute.
`void` `setLong(String name, long value)` Sets the value of the specified attribute.
`void` `setMultiFeatureCollection(int index, IMultiFeatureCollection value)` Sets the value of the specified attribute.
`void` `setMultiFeatureCollection(String name, IMultiFeatureCollection value)` Sets the value of the specified attribute.
`void` `setNull(int index)` Sets the value of the specified attribute to `null`.
`void` `setNull(String name)` Sets the value of the specified attribute to `null`.
`void` `setRasterDataset(int index, IRasterDataset value)` Sets the value of the specified attribute.
`void` `setRasterDataset(String name, IRasterDataset value)` Sets the value of the specified attribute.
`void` `setShort(int index, short value)` Sets the value of the specified attribute.
`void` `setShort(String name, short value)` Sets the value of the specified attribute.
`void` `setString(int index, String value)` Sets the value of the specified attribute.
`void` `setString(String name, String value)` Sets the value of the specified attribute.
`void` `setStyle(int index, IStyle value)` Sets the value of the specified attribute.
`void` `setStyle(String name, IStyle value)` Sets the value of the specified attribute.
`void` `setTime(int index, MITime value)` Sets the value of the specified attribute.
`void` `setTime(String name, MITime value)` Sets the value of the specified attribute.
`void` `setTimespan(int index, MITimespan value)` Sets the value of the specified attribute.
`void` `setTimespan(String name, MITimespan value)` Sets the value of the specified attribute.

### Method Detail

#### getMetadata

    IFeatureMetadata getMetadata()

Accesses the metadata that describes this `IFeature`. The metadata defines the attributes that this feature contains.

Returns:
  an `IFeatureMetadata` which describes this feature.

#### getNames

    Collection getNames()

A collection of names used to identify the feature. A feature may have several names, typically assigned by different authorities. The interface places no restrictions on the structure, meaning or uniqueness of names associated with a feature.

Returns:
  a collection of `String`s containing the names. The value may be an empty collection if no names are defined but will not return null.

#### getDescription

    String getDescription()

Contains a textual description of the feature. This property may be null if no description is available.

Returns:
  a textual description of the feature.

#### isTransient

    boolean isTransient()

Indicates if this `IFeature` is transient. An instance of `IFeature` may have a lifetime that is controlled by an iterator, cursor, or other entity. A typical occurrence of transient features occurs when searching a database table. The feature iterator used to return the data in the resultset returns `IFeature` instances whose data is connected to the memory of the cursor. When the next feature is accessed, the same memory is reused, thus making the previous feature invalid. These features are said to be transient.

There is no guarantee that repositioning a cursor returns the same feature each time, however, even if different feature instances are returned, the previous feature instance should be assumed to be invalid and cannot be accessed.

Transient does not have any relationship to the editability of the data. Features, feature collections, and tables may be edited even if they are designated as transient. Transient simply refers to the lifetime of the `IFeature` and whether or not its memory may be reclaimed or reused as the result of some other action such as advancing an iterator or cursor.

Returns:
  `true` if this feature is transient; false otherwise.

#### isReadOnly

    boolean isReadOnly()

Indicates if the attribute values for this feature are read only.

Refer to the Read Only Properties and Determination section of the package summary for more comprehensive coverage.

Returns:
  `true` if this feature specifically denies edits to attribute values; `false` otherwise.

#### getCopy

    IFeature getCopy()

Get a (permanent) copy of this IFeature. The feature metadata is not copied, the reference is shared between this feature and the new feature. Attribute values, however, are deep copied.

Returns:
  permanent copy of this IFeature
See Also:
  `FeatureCopyUtilities.newFeature(IFeature)`, `IFeature.isTransient()`

#### getKey

    IKey getKey()

Returns the primary key that represents this IFeature. May be null if a key is not defined.

Returns:
  the primary key that represents this IFeature. May be null if a key is not defined.

#### isNull

    boolean isNull(int index)

Indicates if the value of the specified attribute is null. The typed accessor methods such as `getString` and `getInt` will throw an exception if the value for the attribute is null. Users should first check for null values using this method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  `true` if the value for the attribute is null; `false` otherwise.

#### isNull

    boolean isNull(String name)

Indicates if the value of the specified attribute is null. The typed accessor methods such as `getString` and `getInt` will throw an exception if the value for the attribute is null. Users should first check for null values using this method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  `true` if the value for the attribute is null; `false` otherwise.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found.

#### getBoolean

    boolean getBoolean(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getBoolean

    boolean getBoolean(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getInt

    int getInt(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getInt

    int getInt(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getShort

    short getShort(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getShort

    short getShort(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getLong

    long getLong(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getLong

    long getLong(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getFloat

    float getFloat(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getFloat

    float getFloat(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getDouble

    double getDouble(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getDouble

    double getDouble(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getString

    String getString(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getString

    String getString(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getDate

    MIDate getDate(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getDate

    MIDate getDate(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getDateTime

    MIDateTime getDateTime(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getDateTime

    MIDateTime getDateTime(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getTime

    MITime getTime(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getTime

    MITime getTime(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getDateTimeZone

    MIDateTimeZone getDateTimeZone(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getDateTimeZone

    MIDateTimeZone getDateTimeZone(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getTimespan

    MITimespan getTimespan(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getTimespan

    MITimespan getTimespan(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getFeatureGeometry

    IFeatureGeometry getFeatureGeometry(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getFeatureGeometry

    IFeatureGeometry getFeatureGeometry(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getStyle

    IStyle getStyle(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getStyle

    IStyle getStyle(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getChar

    char getChar(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getChar

    char getChar(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getByte

    byte getByte(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getByte

    byte getByte(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getBinary

    byte[] getBinary(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getBinary

    byte[] getBinary(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getRasterDataset

    IRasterDataset getRasterDataset(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getRasterDataset

    IRasterDataset getRasterDataset(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getFeature

    IFeature getFeature(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

todo: Include a section at the top of this interface or maybe in the Feature Package level docs about type extensibility and refer to that here....

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getFeature

    IFeature getFeature(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

todo: Include a section at the top of this interface or maybe in the Feature Package level docs about type extensibility and refer to that here....

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getFeatureCollection

    IFeatureCollection getFeatureCollection(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

todo: Include a section at the top of this interface or maybe in the Feature Package level docs about type extensibility and refer to that here....

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getFeatureCollection

    IFeatureCollection getFeatureCollection(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

todo: Include a section at the top of this interface or maybe in the Feature Package level docs about type extensibility and refer to that here....

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getMultiFeatureCollection

    IMultiFeatureCollection getMultiFeatureCollection(int index)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

todo: Include a section at the top of this interface or maybe in the Feature Package level docs about type extensibility and refer to that here....

Parameters:
  `index` - the index of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### getMultiFeatureCollection

    IMultiFeatureCollection getMultiFeatureCollection(String name)

Gets the value of the specified attribute. If the value is `null`, an exception will be thrown. Users must check for null values before attempting to access a typed value accessor method.

todo: Include a section at the top of this interface or maybe in the Feature Package level docs about type extensibility and refer to that here....

Parameters:
  `name` - the name of the attribute to access.
Returns:
  the value for the specified attribute.
Throws:
  `IllegalArgumentException` - if an attribute with the specified name is not found
  `InconvertableTypeException` - if the attribute is not of the expected type
  `IllegalStateException` - if the value for this attribute is `null`.
See Also:
  `IFeature.isNull(int)`

#### setNull

    void setNull(int index)

Sets the value of the specified attribute to `null`. Attributes do not represent null using a value within the domain of the attribute type. For example, a string attribute is not set to null by calling `setString` and passing in a null string reference for the value. This will generate an exception. To set a value to null, use the setNull method.

Parameters:
  `index` - the index of the attribute to modify.
Throws:
  `IllegalStateException` - If this attribute is not nullable.

#### setNull

    void setNull(String name)
          throws IllegalStateException

Sets the value of the specified attribute to `null`. Attributes do not represent null using a value within the domain of the attribute type. For example, a string attribute is not set to null by calling `setString` and passing in a null string reference for the value. This will generate an exception. To set a value to null, use the setNull method.

Parameters:
  `name` - the name of the attribute to modify.
Throws:
  `IllegalStateException` - if an attribute with the specified name is not found, or if it is not nullable.

#### setBoolean

    void setBoolean(int index,
                    boolean value)

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute is not of the expected type

#### setBoolean

    void setBoolean(String name,
                    boolean value)
             throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setInt

    void setInt(int index,
                int value)
         throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setInt

    void setInt(String name,
                int value)
         throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setShort

    void setShort(int index,
                  short value)
           throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setShort

    void setShort(String name,
                  short value)
           throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setLong

    void setLong(int index,
                 long value)
          throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setLong

    void setLong(String name,
                 long value)
          throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setFloat

    void setFloat(int index,
                  float value)
           throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setFloat

    void setFloat(String name,
                  float value)
           throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setDouble

    void setDouble(int index,
                   double value)
            throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setDouble

    void setDouble(String name,
                   double value)
            throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setString

    void setString(int index,
                   String value)
            throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setString

    void setString(String name,
                   String value)
            throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setFeatureGeometry

    void setFeatureGeometry(int index,
                            IFeatureGeometry value)
                     throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setFeatureGeometry

    void setFeatureGeometry(String name,
                            IFeatureGeometry value)
                     throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setStyle

    void setStyle(int index,
                  IStyle value)
           throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setStyle

    void setStyle(String name,
                  IStyle value)
           throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setRasterDataset

    void setRasterDataset(int index,
                          IRasterDataset value)
                   throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setRasterDataset

    void setRasterDataset(String name,
                          IRasterDataset value)
                   throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setDate

    void setDate(int index,
                 MIDate value)
          throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setDate

    void setDate(String name,
                 MIDate value)
          throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setDateTime

    void setDateTime(int index,
                     MIDateTime value)
              throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setDateTime

    void setDateTime(String name,
                     MIDateTime value)
              throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setDateTimeZone

    void setDateTimeZone(int index,
                         MIDateTimeZone value)
                  throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setDateTimeZone

    void setDateTimeZone(String name,
                         MIDateTimeZone value)
                  throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setTime

    void setTime(int index,
                 MITime value)
          throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setTime

    void setTime(String name,
                 MITime value)
          throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setTimespan

    void setTimespan(int index,
                     MITimespan value)
              throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setTimespan

    void setTimespan(String name,
                     MITimespan value)
              throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setChar

    void setChar(int index,
                 char value)
          throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setChar

    void setChar(String name,
                 char value)
          throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setByte

    void setByte(int index,
                 byte value)
          throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setByte

    void setByte(String name,
                 byte value)
          throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setBinary

    void setBinary(int index,
                   byte[] value)
            throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setBinary

    void setBinary(String name,
                   byte[] value)
            throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setFeature

    void setFeature(int index,
                    IFeature value)
             throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setFeature

    void setFeature(String name,
                    IFeature value)
             throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setFeatureCollection

    void setFeatureCollection(int index,
                              IFeatureCollection value)
                       throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setFeatureCollection

    void setFeatureCollection(String name,
                              IFeatureCollection value)
                       throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.

#### setMultiFeatureCollection

    void setMultiFeatureCollection(int index,
                                   IMultiFeatureCollection value)
                            throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `index` - the index of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if the attribute at the specified index is not of the expected type.

#### setMultiFeatureCollection

    void setMultiFeatureCollection(String name,
                                   IMultiFeatureCollection value)
                            throws InconvertableTypeException

Sets the value of the specified attribute.

Parameters:
  `name` - the name of the attribute to modify.
  `value` - the new value for the attribute.
Throws:
  `InconvertableTypeException` - if an attribute with the specified name is not found, or if it is not of the expected type.