javax.management.openmbean

Class ArrayType<T>

Implemented Interfaces:
Serializable

public class ArrayType<T>
extends OpenType<T>

The open type descriptor for arrays of open data values.
Since:
1.5
See Also:
Serialized Form

Field Summary

Fields inherited from class javax.management.openmbean.OpenType<T>

ALLOWED_CLASSNAMES_LIST, String[]ALLOWED_CLASSNAMES

Constructor Summary

ArrayType(SimpleType elementType, boolean primitiveArray)
Constructs a new ArrayType instance for a unidimensional array of the specified SimpleType.
ArrayType(int dim, OpenType elementType)
Constructs a new ArrayType instance for an array of the specified type with the supplied number of dimensions.

Method Summary

static
ArrayType getArrayType(OpenType elementType)
Returns a new ArrayType instance in a type-safe manner, by ensuring that the type of the given OpenType matches the component type used in the type of the returned instance.
static
ArrayType getPrimitiveArrayType(Class type)
Returns a new ArrayType instance for the given primitive type in a type-safe* manner, by ensuring that the type of the given OpenType matches the type used in the returned instance.
boolean
equals(Object obj)
Compares this array type with another object for equality.
int
getDimension()
Returns the number of dimensions used by arrays of this type.
OpenType
getElementOpenType()
Returns the open type descriptor which describes the type of the elements of this array type.
int
hashCode()
Returns the hash code of the array type.
boolean
isPrimitiveArray()
Returns true if this instance represents an array of a primitive type.
boolean
isValue(Object obj)
Returns true if the specified object is a member of this array type.
String
toString()
Returns a textual representation of this instance.

Methods inherited from class javax.management.openmbean.OpenType<T>

equals, getClassName, getDescription, getTypeName, hashCode, isArray, isValue, toString

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

ArrayType

public ArrayType(SimpleType elementType,
                 boolean primitiveArray)
            throws OpenDataException
Constructs a new ArrayType instance for a unidimensional array of the specified SimpleType. The attributes used by the superclass, OpenType, are automatically defined, based on these values. Both the class name and type name are set to the value returned by the Class.getName() of the array's class. If the array is of a primitive type (indicated by giving primitiveArray the value true), the name will be '[' followed by the appropriate letter for the primitive type (see Class.getName()). If the array is not of a primitive type, then the name is formed from the element type, preceded by '[' and an 'L', in the same way as when the multi-dimensional constructor is used.

The description is based upon the template 1-dimension array of e, where e is either the primitive type or a class name, depending on whether the array itself is of a primitive type or not. The class name of the actual elements is obtainable by calling OpenType.getClassName() on the result of getElementOpenType(). This will be the appropriate wrapper class for a primitive type.

As an example, the array type returned by new ArrayType(SimpleType.INTEGER, true) has the following values:

AttributeValue
Class Name[I
Type Name[I
Description1-dimension array of int
Element Type Class Namejava.lang.Integer
Parameters:
elementType - the type of the elements of the array.
primitiveArray - true if the array should be of a primitive type.
Throws:
OpenDataException - if primitiveArray is true, and elementType is not a valid SimpleType for a primitive type.
Since:
1.6

ArrayType

public ArrayType(int dim,
                 OpenType elementType)
            throws OpenDataException
Constructs a new ArrayType instance for an array of the specified type with the supplied number of dimensions. The attributes used by the superclass, OpenType, are automatically defined, based on these values. Both the class name and type name are set to the value returned by the Class.getName() of the array's class (i.e. the element type, preceded by n instances of '[' and an 'L', where n is the number of dimensions the array has). The description is based upon the template n-dimension array of e, where n is the number of dimensions of the array, and e is the element type. The class name of the actual elements is obtainable by calling OpenType.getClassName() on the result of getElementOpenType().

As an example, the array type returned by new ArrayType(6, SimpleType.INTEGER) has the following values:

AttributeValue
Class Name[[[[[[Ljava.lang.Integer;
Type Name[[[[[[Ljava.lang.Integer;
Description6-dimension array of java.lang.Integer
Element Type Class Namejava.lang.Integer

The dimensions of the array must be equal to or greater than 1. The element type must be an instance of SimpleType, CompositeType or TabularType.

Parameters:
dim - the dimensions of the array.
elementType - the type of the elements of the array.
Throws:
IllegalArgumentException - if dim is less than 1.
OpenDataException - if the element type is not an instance of either SimpleType, CompositeType or TabularType.

Method Details

ArrayType getArrayType

public static  ArrayType getArrayType(OpenType elementType)
            throws OpenDataException
Returns a new ArrayType instance in a type-safe manner, by ensuring that the type of the given OpenType matches the component type used in the type of the returned instance. If the given OpenType is a SimpleType, CompositeType or TabularType, then a 1-dimensional array of that type is returned. Otherwise, if the type is an ArrayType of n dimensions, the returned type is also an ArrayType but of n+1 dimensions. For example, ArrayType.getArrayType(ArrayType.getArrayType(SimpleType.STRING)) returns a 2-dimensional array of SimpleType.

This method caches its results, so that the same instance is returned from subsequent calls with the same parameters.

Parameters:
elementType - the element type of the new array type.
Throws:
OpenDataException - if the class name of elementType is not in OpenType.ALLOWED_CLASSNAMES_LIST.
Since:
1.6

ArrayType getPrimitiveArrayType

public static  ArrayType getPrimitiveArrayType(Class type)
Returns a new ArrayType instance for the given primitive type in a type-safe* manner, by ensuring that the type of the given OpenType matches the type used in the returned instance. If the type is an array of n dimensions, the returned type is also an ArrayType of n dimensions.

As an example, the array type returned by getPrimitiveArrayType(Integer.TYPE) has the following values:

AttributeValue
Class Name[I
Type Name[I
Description1-dimension array of int
Element Type Class Namejava.lang.Integer

This method caches its results, so that the same instance is returned from subsequent calls with the same parameters.

Parameters:
type - the type of the new ArrayType.
Throws:
IllegalArgumentException - if the type is not a primitive array.
Since:
1.6

equals

public boolean equals(Object obj)
Compares this array type with another object for equality. The objects are judged to be equal if:
  • obj is not null.
  • obj is an instance of ArrayType.
  • The dimensions are equal.
  • The element types are equal.
  • The primitive array flag is set the same in both instances.
Overrides:
equals in interface OpenType<T>
Parameters:
obj - the object to compare with.
Returns:
true if the conditions above hold.

getDimension

public int getDimension()
Returns the number of dimensions used by arrays of this type.
Returns:
the number of dimensions.

getElementOpenType

public OpenType getElementOpenType()
Returns the open type descriptor which describes the type of the elements of this array type.
Returns:
the type of the elements.

hashCode

public int hashCode()
Returns the hash code of the array type. This is computed as the sum of the hash code of the element type together with the number of dimensions the array has and the primitive array flag. These are the same elements of the type that are compared as part of the equals(Object) method, thus ensuring that the hashcode is compatible with the equality test.

As instances of this class are immutable, the hash code is computed just once for each instance and reused throughout its life.

Overrides:
hashCode in interface OpenType<T>
Returns:
the hash code of this instance.

isPrimitiveArray

public boolean isPrimitiveArray()
Returns true if this instance represents an array of a primitive type.
Returns:
true if the array is of a primitive type.

isValue

public boolean isValue(Object obj)
Returns true if the specified object is a member of this array type. The object is judged to be so if it is non-null, an array and one of the following two conditions holds:
Overrides:
isValue in interface OpenType<T>
Parameters:
obj - the object to test for membership.
Returns:
true if the object is a member of this type.

toString

public String toString()
Returns a textual representation of this instance. This is constructed using the class name (javax.management.openmbean.ArrayType) and each element of the instance which is relevant to the definition of equals(java.lang.Object) and hashCode() (i.e. the type name, the number of dimensions and the element type).

As instances of this class are immutable, the return value is computed just once for each instance and reused throughout its life.

Overrides:
toString in interface OpenType<T>
Returns:
a @link{java.lang.String} instance representing the instance in textual form.

ArrayType.java -- Open type descriptor for an array. Copyright (C) 2006, 2007 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.