- 类型参数:
-
T
- 必须具有由此ArrayType描述的数组所需的Java组件类型。
- 所有已实现的接口:
-
Serializable
ArrayType
类是描述所有n维数组的开放数据值的开放类型类的实例。
有效的ArrayType
实例示例包括:
// 2维java.lang.String数组
ArrayType<String[][]> a1 = new ArrayType<String[][]>(2, SimpleType.STRING);
// 1维int数组
ArrayType<int[]> a2 = new ArrayType<int[]>(SimpleType.INTEGER, true);
// 1维java.lang.Integer数组
ArrayType<Integer[]> a3 = new ArrayType<Integer[]>(SimpleType.INTEGER, false);
// 4维int数组
ArrayType<int[][][][]> a4 = new ArrayType<int[][][][]>(3, a2);
// 4维java.lang.Integer数组
ArrayType<Integer[][][][]> a5 = new ArrayType<Integer[][][][]>(3, a3);
// 1维java.lang.String数组
ArrayType<String[]> a6 = new ArrayType<String[]>(SimpleType.STRING, false);
// 1维long数组
ArrayType<long[]> a7 = new ArrayType<long[]>(SimpleType.LONG, true);
// 1维java.lang.Integer数组
ArrayType<Integer[]> a8 = ArrayType.getArrayType(SimpleType.INTEGER);
// 2维java.lang.Integer数组
ArrayType<Integer[][]> a9 = ArrayType.getArrayType(a8);
// 2维int数组
ArrayType<int[][]> a10 = ArrayType.getPrimitiveArrayType(int[][].class);
// 3维int数组
ArrayType<int[][][]> a11 = ArrayType.getArrayType(a10);
// 1维float数组
ArrayType<float[]> a12 = ArrayType.getPrimitiveArrayType(float[].class);
// 2维float数组
ArrayType<float[][]> a13 = ArrayType.getArrayType(a12);
// 1维javax.management.ObjectName数组
ArrayType<ObjectName[]> a14 = ArrayType.getArrayType(SimpleType.OBJECTNAME);
// 2维javax.management.ObjectName数组
ArrayType<ObjectName[][]> a15 = ArrayType.getArrayType(a14);
// 3维java.lang.String数组
ArrayType<String[][][]> a16 = new ArrayType<String[][][]>(3, SimpleType.STRING);
// 1维java.lang.String数组
ArrayType<String[]> a17 = new ArrayType<String[]>(1, SimpleType.STRING);
// 2维java.lang.String数组
ArrayType<String[][]> a18 = new ArrayType<String[][]>(1, a17);
// 3维java.lang.String数组
ArrayType<String[][][]> a19 = new ArrayType<String[][][]>(1, a18);
- 自从:
- 1.5
- 参见:
-
Field Summary
Fields declared in class javax.management.openmbean.OpenType
ALLOWED_CLASSNAMES, ALLOWED_CLASSNAMES_LIST
-
Constructor Summary
ConstructorDescription构造描述具有dimension维元素的数组的开放数据值的ArrayType
实例。ArrayType
(SimpleType<?> elementType, boolean primitiveArray) 为提供的SimpleType
构造单维ArrayType
实例。 -
Method Summary
Modifier and TypeMethodDescriptionboolean
将指定的obj
参数与此ArrayType
实例进行比较以判断是否相等。static <E> ArrayType
<E[]> getArrayType
(OpenType<E> elementType) 以类型安全的方式创建ArrayType
实例。int
返回由此ArrayType
实例描述的数组的维数。OpenType
<?> 返回由此ArrayType
实例描述的数组中包含的元素值的开放类型。static <T> ArrayType
<T> getPrimitiveArrayType
(Class<T> arrayClass) 以类型安全的方式创建ArrayType
实例。int
hashCode()
返回此ArrayType
实例的哈希码值。boolean
如果此开放类型描述的开放数据值是原始数组,则返回true
,否则返回false
。boolean
测试obj是否为此ArrayType
实例的值。toString()
返回此ArrayType
实例的字符串表示形式。Methods declared in class javax.management.openmbean.OpenType
getClassName, getDescription, getTypeName, isArray
-
Constructor Details
-
ArrayType
构造描述具有dimension维元素的数组的开放数据值的ArrayType
实例。在
ArrayType
实例上调用时,getClassName
方法返回其描述的数组实例的类名(遵循java.lang.Class
的getName
方法定义的规则),而不是数组元素的类名(通过调用getElementOpenType().getClassName()
返回)。此
ArrayType
实例的类型名称的内部字段也设置为其描述的数组实例的类名。换句话说,方法getClassName
和getTypeName
返回相同的字符串值。此ArrayType
实例的描述字段设置为遵循以下模板的字符串值:- 如果非原始数组:
<dimension>维数组 of <element_class_name>
- 如果原始数组:
<dimension>维数组 of <primitive_type_of_the_element_class_name>
例如,以下代码片段:
将产生以下输出:ArrayType<String[][][]> t = new ArrayType<String[][][]>(3, SimpleType.STRING); System.out.println("array class name = " + t.getClassName()); System.out.println("element class name = " + t.getElementOpenType().getClassName()); System.out.println("array type name = " + t.getTypeName()); System.out.println("array type description = " + t.getDescription());
而下面等效于上面列出的代码片段,也将产生相同的输出:array class name = [[[Ljava.lang.String; element class name = java.lang.String array type name = [[[Ljava.lang.String; array type description = 3维数组 of java.lang.String
ArrayType<String[]> t1 = new ArrayType<String[]>(1, SimpleType.STRING); ArrayType<String[][]> t2 = new ArrayType<String[][]>(1, t1); ArrayType<String[][][]> t3 = new ArrayType<String[][][]>(1, t2); System.out.println("array class name = " + t3.getClassName()); System.out.println("element class name = " + t3.getElementOpenType().getClassName()); System.out.println("array type name = " + t3.getTypeName()); System.out.println("array type description = " + t3.getDescription());
- 参数:
-
dimension
- 此ArrayType
实例描述的数组的维数;必须大于或等于1。 -
elementType
- 此ArrayType
实例描述的数组中包含的元素值的开放类型;必须是SimpleType
、CompositeType
、TabularType
或另一个具有SimpleType
、CompositeType
或TabularType
作为其elementType
的ArrayType
的实例。 - 抛出:
-
IllegalArgumentException
- 如果dimension
不是正整数。 -
OpenDataException
- 如果elementType的className不是开放数据的允许的Java类名之一。
- 如果非原始数组:
-
ArrayType
为提供的SimpleType
构造单维ArrayType
实例。- 参数:
-
elementType
- 此ArrayType
实例描述的数组中包含的元素值的SimpleType
。 -
primitiveArray
- 当此数组描述原始数组时为true
。 - 抛出:
-
IllegalArgumentException
- 如果dimension
不是正整数。 -
OpenDataException
- 如果primitiveArray
为true
且elementType
不是原始类型的有效SimpleType
。 - 自从:
- 1.6
-
-
Method Details
-
getDimension
public int getDimension()返回由此ArrayType
实例描述的数组的维数。- 返回:
- 维数。
-
getElementOpenType
返回由此ArrayType
实例描述的数组中包含的元素值的开放类型。- 返回:
- 元素类型。
-
isPrimitiveArray
public boolean isPrimitiveArray()如果此开放类型描述的开放数据值是原始数组,则返回true
,否则返回false
。- 返回:
- 如果这是原始数组类型,则返回true。
- 自:
- 1.6
-
isValue
测试obj是否是此ArrayType
实例的值。如果obj不为null,obj是一个数组,并且以下任一条件为
true
,则此方法返回true
:- 如果此
ArrayType
实例描述SimpleType
元素或其对应的原始类型的数组,obj的类名与为此ArrayType
实例定义的className字段相同(即getClassName
方法返回的类名,其中包括维度信息),
- 如果此
ArrayType
实例描述实现TabularData
接口或CompositeData
接口的类的数组,obj可以分配给这样一个声明的数组,并且obj中包含的每个元素要么为null,要么是此ArrayType
实例指定的元素的开放类型的有效值。
- 如果此
-
equals
将指定的obj
参数与此ArrayType
实例进行比较,以确定它们是否相等。仅当两个
ArrayType
实例描述具有相同维度、元素开放类型和原始数组标志的数组实例时,它们才相等。 -
hashCode
public int hashCode()返回此ArrayType
实例的哈希码值。ArrayType
实例的哈希码是用于equals
比较的所有信息元素的哈希码之和(即维度、元素开放类型和原始数组标志)。原始值的哈希码是相应装箱对象的哈希码的总和(例如,true
的哈希码是Boolean.TRUE.hashCode()
)。这确保了对于任何两个ArrayType
实例t1
和t2
,如果t1.equals(t2)
,则t1.hashCode()==t2.hashCode()
,这是Object.hashCode()
方法的一般约定所要求的。由于
ArrayType
实例是不可变的,因此此实例的哈希码在第一次调用hashCode
时计算一次,然后对于后续的调用将返回相同的值。 -
toString
返回此ArrayType
实例的字符串表示形式。字符串表示形式包括此类的名称(即
javax.management.openmbean.ArrayType
)、类型名称、维度、元素开放类型和为此实例定义的原始数组标志。由于
ArrayType
实例是不可变的,因此此实例的字符串表示形式在第一次调用toString
时计算一次,然后对于后续的调用将返回相同的值。 -
getArrayType
以类型安全的方式创建ArrayType
实例。可以通过多次调用此方法来构建多维数组。
使用相同参数两次调用此方法可能会返回相同的对象或两个相等但不完全相同的对象。
例如,以下代码片段:
将产生以下输出:ArrayType<String[]> t1 = ArrayType.getArrayType(SimpleType.STRING); ArrayType<String[][]> t2 = ArrayType.getArrayType(t1); ArrayType<String[][][]> t3 = ArrayType.getArrayType(t2); System.out.println("array class name = " + t3.getClassName()); System.out.println("element class name = " + t3.getElementOpenType().getClassName()); System.out.println("array type name = " + t3.getTypeName()); System.out.println("array type description = " + t3.getDescription());
array class name = [[[Ljava.lang.String; element class name = java.lang.String array type name = [[[Ljava.lang.String; array type description = 3-dimension array of java.lang.String
- 类型参数:
-
E
- 描述实例必须具有的Java类型 - 参数:
-
elementType
- 此ArrayType
实例描述的数组中包含的元素值的开放类型;必须是SimpleType
、CompositeType
、TabularType
或另一个具有SimpleType
、CompositeType
或TabularType
作为其elementType
的ArrayType
的实例。 - 返回:
-
一个
ArrayType
实例 - 抛出:
-
OpenDataException
- 如果elementType的className不是开放数据的允许Java类名之一。 - 自:
- 1.6
-
getPrimitiveArrayType
以类型安全的方式创建ArrayType
实例。使用相同参数两次调用此方法可能会返回相同的对象或两个相等但不完全相同的对象。
例如,以下代码片段:
将产生以下输出:ArrayType<int[][][]> t = ArrayType.getPrimitiveArrayType(int[][][].class); System.out.println("array class name = " + t.getClassName()); System.out.println("element class name = " + t.getElementOpenType().getClassName()); System.out.println("array type name = " + t.getTypeName()); System.out.println("array type description = " + t.getDescription());
array class name = [[[I element class name = java.lang.Integer array type name = [[[I array type description = 3-dimension array of int
- 类型参数:
-
T
- 描述实例必须具有的Java类型 - 参数:
-
arrayClass
- 一个原始数组类,例如int[].class
、boolean[][].class
等。返回的ArrayType
的getElementOpenType()
方法返回与数组的原始类型的包装类型对应的SimpleType
。 - 返回:
-
一个
ArrayType
实例 - 抛出:
-
IllegalArgumentException
- 如果arrayClass不是原始数组。 - 自:
- 1.6
-