org.mozilla.javascript

## Class NativeArray

- java.lang.Object
- - org.mozilla.javascript.ScriptableObject
  - - org.mozilla.javascript.IdScriptableObject
    - - org.mozilla.javascript.NativeArray

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Iterable, java.util.Collection, java.util.List, ConstProperties, DebuggableObject, IdFunctionCall, Scriptable

      public class NativeArray
      extends IdScriptableObject
      implements java.util.List

  This class implements the Array native object.
  Author:
    Norris Boyd, Mike McCabe
  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from class org.mozilla.javascript.ScriptableObject

      `CONST, DONTENUM, EMPTY, PERMANENT, READONLY, UNINITIALIZED_CONST`

    - ### Fields inherited from interface org.mozilla.javascript.Scriptable

      `NOT_FOUND`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `NativeArray(long lengthArg)`
    `NativeArray(java.lang.Object[] array)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `add(int index, java.lang.Object element)`
    `boolean` | `add(java.lang.Object o)`
    `boolean` | `addAll(java.util.Collection c)`
    `boolean` | `addAll(int index, java.util.Collection c)`
    `void` | `clear()`
    `boolean` | `contains(java.lang.Object o)`
    `boolean` | `containsAll(java.util.Collection c)`
    `protected void` | `defineOwnProperty(Context cx, java.lang.Object id, ScriptableObject desc, boolean checkValid)` Defines a property on an object.
    `void` | `delete(int index)` Removes the indexed property from the object.
    `java.lang.Object` | `execIdCall(IdFunctionObject f, Context cx, Scriptable scope, Scriptable thisObj, java.lang.Object[] args)` 'thisObj' will be null if invoked as constructor, in which case instance of Scriptable should be returned.
    `protected void` | `fillConstructorProperties(IdFunctionObject ctor)`
    `protected int` | `findInstanceIdInfo(java.lang.String s)` Map name to id of instance property.
    `protected int` | `findPrototypeId(java.lang.String s)`
    `java.lang.Object` | `get(int index)`
    `java.lang.Object` | `get(int index, Scriptable start)` Returns the value of the indexed property or NOT_FOUND.
    `java.lang.Object` | `get(long index)`
    `java.lang.Object[]` | `getAllIds()` Returns an array of ids for the properties of the object.
    `int` | `getAttributes(int index)` Get the attributes of an indexed property.
    `java.lang.String` | `getClassName()` Return the name of the class.
    `java.lang.Object` | `getDefaultValue(java.lang.Class<?> hint)` Implements the [[DefaultValue]] internal method.
    `java.lang.Object[]` | `getIds()` Returns an array of ids for the properties of the object.
    `java.lang.Integer[]` | `getIndexIds()`
    `protected java.lang.String` | `getInstanceIdName(int id)` Map id back to property name it defines.
    `protected java.lang.Object` | `getInstanceIdValue(int id)` Get id value.
    `long` | `getLength()`
    `protected int` | `getMaxInstanceId()` Get maximum id findInstanceIdInfo can generate.
    `protected ScriptableObject` | `getOwnPropertyDescriptor(Context cx, java.lang.Object id)`
    `boolean` | `has(int index, Scriptable start)` Returns true if the property index is defined.
    `int` | `indexOf(java.lang.Object o)`
    `protected void` | `initPrototypeId(int id)`
    `java.util.Iterator` | `iterator()`
    `long` | `jsGet_length()` Deprecated. Use `getLength()` instead.
    `int` | `lastIndexOf(java.lang.Object o)`
    `java.util.ListIterator` | `listIterator()`
    `java.util.ListIterator` | `listIterator(int start)`
    `void` | `put(int index, Scriptable start, java.lang.Object value)` Sets the value of the indexed property, creating it if need be.
    `void` | `put(java.lang.String id, Scriptable start, java.lang.Object value)` Sets the value of the named property, creating it if need be.
    `java.lang.Object` | `remove(int index)`
    `boolean` | `remove(java.lang.Object o)`
    `boolean` | `removeAll(java.util.Collection c)`
    `boolean` | `retainAll(java.util.Collection c)`
    `java.lang.Object` | `set(int index, java.lang.Object element)`
    `protected void` | `setInstanceIdAttributes(int id, int attr)` Update the attributes of the given instance property.
    `protected void` | `setInstanceIdValue(int id, java.lang.Object value)` Set or delete id value.
    `int` | `size()`
    `java.util.List` | `subList(int fromIndex, int toIndex)`
    `java.lang.Object[]` | `toArray()`
    `java.lang.Object[]` | `toArray(java.lang.Object[] a)`

    - ### Methods inherited from class org.mozilla.javascript.IdScriptableObject

      `activatePrototypeMap, addIdFunctionProperty, defaultGet, defaultPut, defineOwnProperty, delete, exportAsJSClass, get, getAttributes, has, hasPrototypeMap, incompatibleCallError, initPrototypeConstructor, initPrototypeMethod, initPrototypeValue, instanceIdInfo, setAttributes`

    - ### Methods inherited from class org.mozilla.javascript.ScriptableObject

      `applyDescriptorToAttributeBitset, associateValue, avoidObjectDetection, buildDataDescriptor, callMethod, callMethod, checkPropertyChange, checkPropertyDefinition, defineClass, defineClass, defineClass, defineConst, defineConstProperty, defineFunctionProperties, defineOwnProperties, defineProperty, defineProperty, defineProperty, defineProperty, deleteProperty, deleteProperty, ensureScriptable, ensureScriptableObject, equivalentValues, get, getArrayPrototype, getAssociatedValue, getAttributes, getAttributes, getClassPrototype, getDefaultValue, getFunctionPrototype, getGetterOrSetter, getObjectPrototype, getParentScope, getProperty, getProperty, getPropertyIds, getPrototype, getSlot, getTopLevelScope, getTopScopeValue, getTypedProperty, getTypedProperty, getTypeOf, hasInstance, hasProperty, hasProperty, isAccessorDescriptor, isConst, isDataDescriptor, isEmpty, isExtensible, isFalse, isGenericDescriptor, isGetterOrSetter, isSealed, isTrue, preventExtensions, putConst, putConstProperty, putProperty, putProperty, redefineProperty, sameValue, sealObject, setAttributes, setAttributes, setAttributes, setGetterOrSetter, setParentScope, setPrototype`

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

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

    - ### Methods inherited from interface java.util.List

      `equals, hashCode, isEmpty`

- - ### Constructor Detail

    - #### NativeArray

          public NativeArray(long lengthArg)

    - #### NativeArray

          public NativeArray(java.lang.Object[] array)

  - ### Method Detail

    - #### getClassName

          public java.lang.String getClassName()

      Description copied from class: `ScriptableObject`
      Return the name of the class. This is typically the same name as the constructor. Classes extending ScriptableObject must implement this abstract method.
      Specified by:
        `getClassName` in interface `Scriptable`
      Specified by:
        `getClassName` in class `ScriptableObject`

    - #### getMaxInstanceId

          protected int getMaxInstanceId()

      Description copied from class: `IdScriptableObject`
      Get maximum id findInstanceIdInfo can generate.
      Overrides:
        `getMaxInstanceId` in class `IdScriptableObject`

    - #### setInstanceIdAttributes

          protected void setInstanceIdAttributes(int id,
                                     int attr)

      Description copied from class: `IdScriptableObject`
      Update the attributes of the given instance property. Classes which want to support changing property attributes via Object.defineProperty must override this method. The default implementation throws InternalError.
      Overrides:
        `setInstanceIdAttributes` in class `IdScriptableObject`
      Parameters:
        `id` - the instance property id
        `attr` - the new attribute bitset

    - #### findInstanceIdInfo

          protected int findInstanceIdInfo(java.lang.String s)

      Description copied from class: `IdScriptableObject`
      Map name to id of instance property. Should return 0 if not found or the result of `IdScriptableObject.instanceIdInfo(int, int)`.
      Overrides:
        `findInstanceIdInfo` in class `IdScriptableObject`

    - #### getInstanceIdName

          protected java.lang.String getInstanceIdName(int id)

      Description copied from class: `IdScriptableObject`
      Map id back to property name it defines.
      Overrides:
        `getInstanceIdName` in class `IdScriptableObject`

    - #### getInstanceIdValue

          protected java.lang.Object getInstanceIdValue(int id)

      Description copied from class: `IdScriptableObject`
      Get id value. If id value is constant, descendant can call cacheIdValue to store value in the permanent cache. Default implementation creates IdFunctionObject instance for given id and cache its value
      Overrides:
        `getInstanceIdValue` in class `IdScriptableObject`

    - #### setInstanceIdValue

          protected void setInstanceIdValue(int id,
                                java.lang.Object value)

      Description copied from class: `IdScriptableObject`
      Set or delete id value. If value == NOT_FOUND , the implementation should make sure that the following getInstanceIdValue return NOT_FOUND.
      Overrides:
        `setInstanceIdValue` in class `IdScriptableObject`

    - #### fillConstructorProperties

          protected void fillConstructorProperties(IdFunctionObject ctor)

      Overrides:
        `fillConstructorProperties` in class `IdScriptableObject`

    - #### initPrototypeId

          protected void initPrototypeId(int id)

      Overrides:
        `initPrototypeId` in class `IdScriptableObject`

    - #### execIdCall

          public java.lang.Object execIdCall(IdFunctionObject f,
                                    Context cx,
                                    Scriptable scope,
                                    Scriptable thisObj,
                                    java.lang.Object[] args)

      Description copied from class: `IdScriptableObject`
      'thisObj' will be null if invoked as constructor, in which case instance of Scriptable should be returned.
      Specified by:
        `execIdCall` in interface `IdFunctionCall`
      Overrides:
        `execIdCall` in class `IdScriptableObject`

    - #### get

          public java.lang.Object get(int index,
                             Scriptable start)

      Description copied from class: `ScriptableObject`
      Returns the value of the indexed property or NOT_FOUND.
      Specified by:
        `get` in interface `Scriptable`
      Overrides:
        `get` in class `ScriptableObject`
      Parameters:
        `index` - the numeric index for the property
        `start` - the object in which the lookup began
      Returns:
        the value of the property (may be null), or NOT_FOUND
      See Also:
        `Scriptable.get(String,Scriptable)`

    - #### has

          public boolean has(int index,
                    Scriptable start)

      Description copied from class: `ScriptableObject`
      Returns true if the property index is defined.
      Specified by:
        `has` in interface `Scriptable`
      Overrides:
        `has` in class `ScriptableObject`
      Parameters:
        `index` - the numeric index for the property
        `start` - the object in which the lookup began
      Returns:
        true if and only if the property was found in the object
      See Also:
        `Scriptable.get(int, Scriptable)`, `ScriptableObject.getProperty(Scriptable, int)`

    - #### put

          public void put(java.lang.String id,
                 Scriptable start,
                 java.lang.Object value)

      Description copied from class: `ScriptableObject`
      Sets the value of the named property, creating it if need be. If the property was created using defineProperty, the appropriate setter method is called.

      If the property's attributes include READONLY, no action is taken. This method will actually set the property in the start object.

      Specified by:
        `put` in interface `Scriptable`
      Overrides:
        `put` in class `IdScriptableObject`
      Parameters:
        `id` - the name of the property
        `start` - the object whose property is being set
        `value` - value to set the property to
      See Also:
        `Scriptable.has(String, Scriptable)`, `Scriptable.get(String, Scriptable)`, `ScriptableObject.putProperty(Scriptable, String, Object)`, `Context.toObject(Object, Scriptable)`

    - #### put

          public void put(int index,
                 Scriptable start,
                 java.lang.Object value)

      Description copied from class: `ScriptableObject`
      Sets the value of the indexed property, creating it if need be.
      Specified by:
        `put` in interface `Scriptable`
      Overrides:
        `put` in class `ScriptableObject`
      Parameters:
        `index` - the numeric index for the property
        `start` - the object whose property is being set
        `value` - value to set the property to
      See Also:
        `Scriptable.has(int, Scriptable)`, `Scriptable.get(int, Scriptable)`, `ScriptableObject.putProperty(Scriptable, int, Object)`, `Context.toObject(Object, Scriptable)`

    - #### delete

          public void delete(int index)

      Description copied from class: `ScriptableObject`
      Removes the indexed property from the object. If the property is not found, or it has the PERMANENT attribute, no action is taken.
      Specified by:
        `delete` in interface `Scriptable`
      Overrides:
        `delete` in class `ScriptableObject`
      Parameters:
        `index` - the numeric index for the property
      See Also:
        `Scriptable.get(int, Scriptable)`, `ScriptableObject.deleteProperty(Scriptable, int)`

    - #### getIds

          public java.lang.Object[] getIds()

      Description copied from class: `ScriptableObject`
      Returns an array of ids for the properties of the object.

      Any properties with the attribute DONTENUM are not listed.

      Specified by:
        `getIds` in interface `Scriptable`
      Overrides:
        `getIds` in class `ScriptableObject`
      Returns:
        an array of java.lang.Objects with an entry for every listed property. Properties accessed via an integer index will have a corresponding Integer entry in the returned array. Properties accessed by a String will have a String entry in the returned array.

    - #### getAllIds

          public java.lang.Object[] getAllIds()

      Description copied from class: `ScriptableObject`
      Returns an array of ids for the properties of the object.

      All properties, even those with attribute DONTENUM, are listed.

      Specified by:
        `getAllIds` in interface `DebuggableObject`
      Overrides:
        `getAllIds` in class `ScriptableObject`
      Returns:
        an array of java.lang.Objects with an entry for every listed property. Properties accessed via an integer index will have a corresponding Integer entry in the returned array. Properties accessed by a String will have a String entry in the returned array.

    - #### getIndexIds

          public java.lang.Integer[] getIndexIds()

    - #### getDefaultValue

          public java.lang.Object getDefaultValue(java.lang.Class<?> hint)

      Description copied from class: `ScriptableObject`
      Implements the [[DefaultValue]] internal method.

      Note that the toPrimitive conversion is a no-op for every type other than Object, for which [[DefaultValue]] is called. See ECMA 9.1.

      A `hint` of null means "no hint".

      Specified by:
        `getDefaultValue` in interface `Scriptable`
      Overrides:
        `getDefaultValue` in class `ScriptableObject`
      Parameters:
        `hint` - the type hint
      Returns:
        the default value for the object See ECMA 8.6.2.6.

    - #### getAttributes

          public int getAttributes(int index)

      Description copied from class: `ScriptableObject`
      Get the attributes of an indexed property.
      Overrides:
        `getAttributes` in class `ScriptableObject`
      Parameters:
        `index` - the numeric index for the property
      Returns:
        the bitset of attributes
      See Also:
        `ScriptableObject.has(String, Scriptable)`, `ScriptableObject.READONLY`, `ScriptableObject.DONTENUM`, `ScriptableObject.PERMANENT`, `ScriptableObject.EMPTY`

    - #### getOwnPropertyDescriptor

          protected ScriptableObject getOwnPropertyDescriptor(Context cx,
                                                  java.lang.Object id)

      Overrides:
        `getOwnPropertyDescriptor` in class `IdScriptableObject`

    - #### defineOwnProperty

          protected void defineOwnProperty(Context cx,
                               java.lang.Object id,
                               ScriptableObject desc,
                               boolean checkValid)

      Description copied from class: `ScriptableObject`
      Defines a property on an object. Based on [[DefineOwnProperty]] from 8.12.10 of the spec.
      Overrides:
        `defineOwnProperty` in class `ScriptableObject`
      Parameters:
        `cx` - the current Context
        `id` - the name/index of the property
        `desc` - the new property descriptor, as described in 8.6.1
        `checkValid` - whether to perform validity checks

    - #### getLength

          public long getLength()

    - #### jsGet_length

          public long jsGet_length()

      Deprecated. Use `getLength()` instead.

    - #### contains

          public boolean contains(java.lang.Object o)

      Specified by:
        `contains` in interface `java.util.Collection`
      Specified by:
        `contains` in interface `java.util.List`

    - #### toArray

          public java.lang.Object[] toArray()

      Specified by:
        `toArray` in interface `java.util.Collection`
      Specified by:
        `toArray` in interface `java.util.List`

    - #### toArray

          public java.lang.Object[] toArray(java.lang.Object[] a)

      Specified by:
        `toArray` in interface `java.util.Collection`
      Specified by:
        `toArray` in interface `java.util.List`

    - #### containsAll

          public boolean containsAll(java.util.Collection c)

      Specified by:
        `containsAll` in interface `java.util.Collection`
      Specified by:
        `containsAll` in interface `java.util.List`

    - #### size

          public int size()

      Specified by:
        `size` in interface `java.util.Collection`
      Specified by:
        `size` in interface `java.util.List`
      Overrides:
        `size` in class `ScriptableObject`

    - #### get

          public java.lang.Object get(long index)

    - #### get

          public java.lang.Object get(int index)

      Specified by:
        `get` in interface `java.util.List`

    - #### indexOf

          public int indexOf(java.lang.Object o)

      Specified by:
        `indexOf` in interface `java.util.List`

    - #### lastIndexOf

          public int lastIndexOf(java.lang.Object o)

      Specified by:
        `lastIndexOf` in interface `java.util.List`

    - #### iterator

          public java.util.Iterator iterator()

      Specified by:
        `iterator` in interface `java.lang.Iterable`
      Specified by:
        `iterator` in interface `java.util.Collection`
      Specified by:
        `iterator` in interface `java.util.List`

    - #### listIterator

          public java.util.ListIterator listIterator()

      Specified by:
        `listIterator` in interface `java.util.List`

    - #### listIterator

          public java.util.ListIterator listIterator(int start)

      Specified by:
        `listIterator` in interface `java.util.List`

    - #### add

          public boolean add(java.lang.Object o)

      Specified by:
        `add` in interface `java.util.Collection`
      Specified by:
        `add` in interface `java.util.List`

    - #### remove

          public boolean remove(java.lang.Object o)

      Specified by:
        `remove` in interface `java.util.Collection`
      Specified by:
        `remove` in interface `java.util.List`

    - #### addAll

          public boolean addAll(java.util.Collection c)

      Specified by:
        `addAll` in interface `java.util.Collection`
      Specified by:
        `addAll` in interface `java.util.List`

    - #### removeAll

          public boolean removeAll(java.util.Collection c)

      Specified by:
        `removeAll` in interface `java.util.Collection`
      Specified by:
        `removeAll` in interface `java.util.List`

    - #### retainAll

          public boolean retainAll(java.util.Collection c)

      Specified by:
        `retainAll` in interface `java.util.Collection`
      Specified by:
        `retainAll` in interface `java.util.List`

    - #### clear

          public void clear()

      Specified by:
        `clear` in interface `java.util.Collection`
      Specified by:
        `clear` in interface `java.util.List`

    - #### add

          public void add(int index,
                 java.lang.Object element)

      Specified by:
        `add` in interface `java.util.List`

    - #### addAll

          public boolean addAll(int index,
                       java.util.Collection c)

      Specified by:
        `addAll` in interface `java.util.List`

    - #### set

          public java.lang.Object set(int index,
                             java.lang.Object element)

      Specified by:
        `set` in interface `java.util.List`

    - #### remove

          public java.lang.Object remove(int index)

      Specified by:
        `remove` in interface `java.util.List`

    - #### subList

          public java.util.List subList(int fromIndex,
                               int toIndex)

      Specified by:
        `subList` in interface `java.util.List`

    - #### findPrototypeId

          protected int findPrototypeId(java.lang.String s)

      Overrides:
        `findPrototypeId` in class `IdScriptableObject`