T
- 此类型描述的实例的Java类型必须具有。
例如, SimpleType.INTEGER
是SimpleType<Integer>
这是一个子类OpenType<Integer>
,这意味着一个属性,参数或返回被描述为一个值SimpleType.INTEGER
必须具有Java类型Integer
。
public abstract class OpenType<T> extends Object implements Serializable
OpenType
类是描述开放数据值的实际开放类型的所有类的父抽象类。
开放类型由以下定义:
ALLOWED_CLASSNAMES_LIST
), Modifier and Type | Field and Description |
---|---|
static String[] |
ALLOWED_CLASSNAMES
已弃用
|
static List<String> |
ALLOWED_CLASSNAMES_LIST
列出允许开放数据值的Java类的完全限定名称。
|
Modifier | Constructor and Description |
---|---|
protected |
OpenType(String className, String typeName, String description)
构造一个
OpenType 实例(实际上一个子类实例是
OpenType 是抽象的),检查给定参数的有效性。
|
Modifier and Type | Method and Description |
---|---|
abstract boolean |
equals(Object obj)
将指定的
obj 参数与此打开类型的实例进行比较以获得相等性。
|
String |
getClassName()
返回此开放类型描述的开放数据值的完全限定Java类名称。
|
String |
getDescription()
返回此
OpenType 实例的文本描述。
|
String |
getTypeName()
返回此
OpenType 实例的名称。
|
abstract int |
hashCode()
返回对象的哈希码值。
|
boolean |
isArray()
返回
true 如果打开的类型描述的开放数据值是数组,
false false。
|
abstract boolean |
isValue(Object obj)
测试
obj是否是此打开类型的值。
|
abstract String |
toString()
返回此打开类型实例的字符串表示形式。
|
public static final List<String> ALLOWED_CLASSNAMES_LIST
ALLOWED_CLASSNAMES_LIST = {
"java.lang.Void",
"java.lang.Boolean",
"java.lang.Character",
"java.lang.Byte",
"java.lang.Short",
"java.lang.Integer",
"java.lang.Long",
"java.lang.Float",
"java.lang.Double",
"java.lang.String",
"java.math.BigDecimal",
"java.math.BigInteger",
"java.util.Date",
"javax.management.ObjectName",
CompositeData.class.getName(),
TabularData.class.getName() } ;
@Deprecated public static final String[] ALLOWED_CLASSNAMES
ALLOWED_CLASSNAMES_LIST
。
protected OpenType(String className, String typeName, String description) throws OpenDataException
OpenType
实例(实际上一个子类实例为OpenType
是抽象的),检查给定参数的有效性。
以下对每个参数描述有效性约束。
className
- 这个开放类型描述的开放数据值的完全限定的Java类名称。
ALLOWED_CLASSNAMES_LIST
列出了开放数据值允许的有效Java类名。
这些类或它们的相应原始类型的任一项所述的多维数组也是允许的类,在这种情况下,类名称遵循由该方法所定义的规则getName()
的java.lang.Class
。
例如,字符串的3维数组的类名为“ [[[Ljava.lang.String;
”(不带引号)。
typeName
- 此实例表示的打开类型的名称;
不能为null或空字符串。
description
- 该实例表示的开放类型的可读描述;
不能为null或空字符串。
IllegalArgumentException
- 如果
className ,
typeName或
description是空字符串或空字符串
OpenDataException
- 如果
className不是开放数据允许的Java类名称之一
public String getClassName()
ALLOWED_CLASSNAMES_LIST
中列出了开放数据值中唯一可能的Java类名。
这些类或它们的相应原始类型的任一项所述的多维数组也是允许的类,在这种情况下,类名称遵循由该方法所定义的规则getName()
的java.lang.Class
。
例如,一个3维数组的字符串的类名为“ [[[Ljava.lang.String;
”(没有引号),一个三维数组的整数类名为“ [[[Ljava.lang.Integer;
”(不带引号)和一个3维数组int的类名为“ [[[I
”(不含引号)
public String getTypeName()
OpenType
实例的名称。
public String getDescription()
OpenType
实例的文本描述。
public boolean isArray()
true
如果打开的类型的开放数据值是数组,
false
false。
public abstract boolean isValue(Object obj)
obj
- 要测试的对象的有效性。
true
如果
obj是此开放类型的值,
false
false。
public abstract boolean equals(Object obj)
obj
参数与此打开类型的实例进行比较以获得相等性。
equals
在
Object
obj
- 要比较的对象。
obj
相等,则为true。
Object.hashCode()
, HashMap
public abstract int hashCode()
Object
HashMap
提供的哈希表的优点 。
hashCode
的总合同是:
hashCode
方法必须始终返回相同的整数,前提是修改了对象中equals
比较中没有使用的equals
。 该整数不需要从一个应用程序的执行到相同应用程序的另一个执行保持一致。 equals(Object)
方法相等,则在两个对象中的每个对象上调用hashCode
方法必须产生相同的整数结果。 Object.equals(java.lang.Object)
方法不相等,那么在两个对象中的每个对象上调用hashCode
方法必须产生不同的整数结果。 但是,程序员应该意识到,为不等对象生成不同的整数结果可能会提高哈希表的性能。 尽可能合理实用,由类Object
定义的hashCode方法确实为不同对象返回不同的整数。 (这通常通过将对象的内部地址转换为整数来实现,但Java的编程语言不需要此实现技术。)
hashCode
在
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)