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
`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`