public class ArrayType<T> extends OpenType<T>
ArrayType
类是开放类型类,其实例描述了作为开放数据值的n维阵列所有打开的数据值。
有效的ArrayType
实例的例子有:
// 2-dimension array of java.lang.String ArrayType<String[][]> a1 = new ArrayType<String[][]>(2, SimpleType.STRING); // 1-dimension array of int ArrayType<int[]> a2 = new ArrayType<int[]>(SimpleType.INTEGER, true); // 1-dimension array of java.lang.Integer ArrayType<Integer[]> a3 = new ArrayType<Integer[]>(SimpleType.INTEGER, false); // 4-dimension array of int ArrayType<int[][][][]> a4 = new ArrayType<int[][][][]>(3, a2); // 4-dimension array of java.lang.Integer ArrayType<Integer[][][][]> a5 = new ArrayType<Integer[][][][]>(3, a3); // 1-dimension array of java.lang.String ArrayType<String[]> a6 = new ArrayType<String[]>(SimpleType.STRING, false); // 1-dimension array of long ArrayType<long[]> a7 = new ArrayType<long[]>(SimpleType.LONG, true); // 1-dimension array of java.lang.Integer ArrayType<Integer[]> a8 = ArrayType.getArrayType(SimpleType.INTEGER); // 2-dimension array of java.lang.Integer ArrayType<Integer[][]> a9 = ArrayType.getArrayType(a8); // 2-dimension array of int ArrayType<int[][]> a10 = ArrayType.getPrimitiveArrayType(int[][].class); // 3-dimension array of int ArrayType<int[][][]> a11 = ArrayType.getArrayType(a10); // 1-dimension array of float ArrayType<float[]> a12 = ArrayType.getPrimitiveArrayType(float[].class); // 2-dimension array of float ArrayType<float[][]> a13 = ArrayType.getArrayType(a12); // 1-dimension array of javax.management.ObjectName ArrayType<ObjectName[]> a14 = ArrayType.getArrayType(SimpleType.OBJECTNAME); // 2-dimension array of javax.management.ObjectName ArrayType<ObjectName[][]> a15 = ArrayType.getArrayType(a14); // 3-dimension array of java.lang.String ArrayType<String[][][]> a16 = new ArrayType<String[][][]>(3, SimpleType.STRING); // 1-dimension array of java.lang.String ArrayType<String[]> a17 = new ArrayType<String[]>(1, SimpleType.STRING); // 2-dimension array of java.lang.String ArrayType<String[][]> a18 = new ArrayType<String[][]>(1, a17); // 3-dimension array of java.lang.String ArrayType<String[][][]> a19 = new ArrayType<String[][][]>(1, a18);
ALLOWED_CLASSNAMES, ALLOWED_CLASSNAMES_LIST
Constructor and Description |
---|
ArrayType(int dimension, OpenType<?> elementType)
构造一个
描述
开放数据值的
ArrayType实例,它是具有
开放类型为
elementType的元素的维度
维度的数组。
|
ArrayType(SimpleType<?> elementType, boolean primitiveArray)
为提供的
SimpleType 构造一维
ArrayType 实例。
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object obj)
将指定的
obj 参数与此
ArrayType 实例相比较。
|
static <E> ArrayType<E[]> |
getArrayType(OpenType<E> elementType)
以类型安全的方式创建一个
ArrayType 实例。
|
int |
getDimension()
返回此
ArrayType实例描述的数组的维
数 。
|
OpenType<?> |
getElementOpenType()
返回此
ArrayType实例描述的阵列中包含的元素值的
打开类型 。
|
static <T> ArrayType<T> |
getPrimitiveArrayType(类<T> arrayClass)
以类型安全的方式创建一个
ArrayType 实例。
|
int |
hashCode()
返回此
ArrayType 实例的哈希码值。
|
boolean |
isPrimitiveArray()
返回
true 如果打开类型的开放数据值描述的是原始数组,
false false。
|
boolean |
isValue(Object obj)
测试
obj是否为此
ArrayType 实例的值。
|
String |
toString()
返回此
ArrayType 实例的字符串表示形式。
|
getClassName, getDescription, getTypeName, isArray
public ArrayType(int dimension, OpenType<?> elementType) throws OpenDataException
当对某一ArrayType实例调用时, getClassName
方法返回它所描述的阵列的实例(以下由定义的规则的类名getName
的方法java.lang.Class
),而不是数组元素的类名(其通过调用返回到getElementOpenType().getClassName() )。
与此ArrayType
实例的类型名称相对应的内部字段也设置为其描述的数组实例的类名。 换句话说,方法getClassName
和getTypeName
返回相同的字符串值。 对应于该ArrayType
实例的描述的内部字段设置为一个字符串值,后面跟随以下模板:
例如,下面的代码片段:
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-dimension array 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 ArrayType另一个的实例与一SimpleType,或CompositeType TabularType作为其elementType。
IllegalArgumentException
- 如果
dimension
不是正整数。
OpenDataException
- 如果
elementType的className不是开放数据的允许的Java类名称之一。
public ArrayType(SimpleType<?> elementType, boolean primitiveArray) throws OpenDataException
SimpleType
构造一维ArrayType
实例。
当primitiveArray
为true
时,此构造函数支持创建基本类型数组。
对于基本阵列getElementOpenType()
方法返回SimpleType
对应于包装类型基本类型的数组的。
当在ArrayType实例上调用时, getClassName
方法返回其描述的数组实例的类名(遵循由getName
方法定义的规则java.lang.Class
),而不是数组元素的类名(由调用getElementOpenType().getClassName()返回) )。
与此ArrayType
实例的类型名称对应的内部字段也设置为其描述的数组实例的类名。 换句话说,方法getClassName
和getTypeName
返回相同的字符串值。 与此ArrayType
实例的描述对应的内部字段设置为一个字符串值,后面的模板如下:
例如,下面的代码片段:
ArrayType<int[]> t = new ArrayType<int[]>(SimpleType.INTEGER, true); 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 = 1-dimension array of int
elementType
-所述
SimpleType
包含在由该所述阵列中的元素值的
ArrayType
实例。
primitiveArray
-
true
当这个数组描述原始数组时。
IllegalArgumentException
- 如果
dimension
不是正整数。
OpenDataException
-如果
primitiveArray
是
true
和
elementType
不是有效
SimpleType
的基本类型。
public int getDimension()
public OpenType<?> getElementOpenType()
public boolean isPrimitiveArray()
true
如果打开类型的开放数据值描述的是原始数组,
false
false。
public boolean isValue(Object obj)
ArrayType
实例的值。
该方法返回true
当且仅当obj不为null时, obj是一个数组,以下任何一个是true :
ArrayType
实例描述了一个SimpleType元素或它们对应的基元类型的数组,则obj的类名与为此ArrayType
实例定义的className字段相同(即由包含维度信息的getClassName
方法返回的类名) , ArrayType
实例描述了实现TabularData
接口或CompositeData
接口的类的数组,则obj可以分配给这样一个声明的数组,并且包含在{ obj中的每一个元素都是空的,或者这个ArrayType
的元素的打开类型的ArrayType
实例。 public boolean equals(Object obj)
obj
参数与此ArrayType
实例相比较。
当且仅当它们描述具有相同维度,元素的开放类型和原始数组标志的数组实例时,两个ArrayType
实例是相等的。
equals
在
OpenType<T>
obj
- 要与此ArrayType
实例相等的对象;
如果obj是null
或不是类的一个实例ArrayType
这个方法返回false
。
true
如果指定的对象等于这个
ArrayType
实例。
Object.hashCode()
, HashMap
public int hashCode()
ArrayType
实例的哈希码值。
ArrayType
实例的哈希码是equals
比较(即维度,元素的开放类型和原始数组标志)中使用的所有信息元素的哈希码的总和。 原始值的哈希码是相应的盒装对象的哈希码(例如true的哈希码为Boolean.TRUE.hashCode() )。 这确保了t1.equals(t2)
意味着t1.hashCode()==t2.hashCode()
对于任何两个ArrayType
实例t1
和t2
,根据方法Object.hashCode()
的一般合同的要求 。
由于ArrayType
实例是不可变的,因此在第一次调用hashCode
时,该实例的哈希码将被计算一次,然后为后续调用返回相同的值。
hashCode
在
OpenType<T>
ArrayType
实例的哈希码值
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public String toString()
ArrayType
实例的字符串表示形式。
字符串表示由此类的名称(即javax.management.openmbean.ArrayType
),类型名称,维度,元素的打开类型和为此实例定义的基元数组标志。
由于ArrayType
实例是不可变的,所以在第一次调用toString
时,该实例的字符串表示计算一次,然后为后续调用返回相同的值。
public static <E> ArrayType<E[]> getArrayType(OpenType<E> elementType) throws OpenDataException
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
elementType
- 此ArrayType实例描述的阵列中包含的元素值的开放类型 ;
必须是SimpleType,CompositeType,或TabularType ArrayType另一个的实例与一SimpleType,或CompositeType TabularType作为其elementType。
OpenDataException
- 如果
elementType的className不是开放数据的允许的Java类名称之一。
public static <T> ArrayType<T> getPrimitiveArrayType(类<T> arrayClass)
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
arrayClass
-基本数组类如int[].class
, boolean[][].class
等getElementOpenType()
返回的方法ArrayType
返回SimpleType
对应于包装类型基本类型的数组的。
IllegalArgumentException
- 如果
arrayClass不是原始数组。