- java.lang.Object
-
- jdk.dynalink.linker.support.TypeUtilities
-
public final class TypeUtilities extends Object
用于处理Java类型的各种静态实用程序方法。
-
-
方法摘要
所有方法 静态方法 具体的方法 变量和类型 方法 描述 static 类<?>
getPrimitiveType(类<?> wrapperType)
当传递表示基本类型的包装器的类时,返回表示相应基元类型的类。static 类<?>
getPrimitiveTypeByName(String name)
给定基本类型的名称将返回表示它的类。static 类<?>
getWrapperType(类<?> primitiveType)
传递表示基本类型的类时,返回表示相应包装类型的类。static boolean
isConvertibleWithoutLoss(类<?> sourceType, 类<?> targetType)
确定是否可以将类型转换为另一种类型而不会丢失任何精度。static boolean
isMethodInvocationConvertible(类<?> sourceType, 类<?> targetType)
根据JLS 5.3“方法调用转换”,确定是否可以使用方法调用转换将一种类型转换为另一种类型。static boolean
isSubtype(类<?> subType, 类<?> superType)
根据JLS 4.10“Subtyping”确定一种类型是否是另一种类型的子类型。static boolean
isWrapperType(类<?> type)
如果传递的类型是基本类型的包装器,则返回true。
-
-
-
方法详细信息
-
isMethodInvocationConvertible
public static boolean isMethodInvocationConvertible(类<?> sourceType, 类<?> targetType)
根据JLS 5.3“方法调用转换”,确定是否可以使用方法调用转换将一种类型转换为另一种类型。 这基本上是子类型(参见isSubtype(Class, Class)
)允许的所有转换以及装箱转换(JLS 5.1.7),可选地随后是加宽引用转换,以及拆箱转换(JLS 5.1.8),可选地随后加宽基元转换。- 参数
-
sourceType
- 要转换的类型(参数类型的调用站点类型,返回类型的方法类型) -
targetType
- 要转换为的参数类型(参数类型的方法类型,返回类型的调用站点类型) - 结果
- 如果源类型是可转换为目标类型的方法调用,则返回true。
-
isConvertibleWithoutLoss
public static boolean isConvertibleWithoutLoss(类<?> sourceType, 类<?> targetType)
确定是否可以将类型转换为另一种类型而不会丢失任何精度。 作为特殊情况,void被认为仅可转换为void和Object
(null
或DynamicLinkerFactory.setAutoConversionStrategy(MethodTypeConversionStrategy)
中设置的自定义值)。 有点不直观的是,我们认为任何东西都可以转换为void,即使转换为void会导致数据的最终丢失。 另一方面,转换为void本质上意味着该值没有意义并且应该被丢弃,因此不期望保留任何精度。- 参数
-
sourceType
- 源类型 -
targetType
- 目标类型 - 结果
- 如果可以进行无损转换,则为true
-
isSubtype
public static boolean isSubtype(类<?> subType, 类<?> superType)
根据JLS 4.10“Subtyping”确定一种类型是否是另一种类型的子类型。 注意:这不是严格或正确的子类型,因此对于相同类型也会返回true; 完全准确,它允许身份转换(JLS 5.1.1),扩展原始转换(JLS 5.1.2)和扩展参考转换(JLS 5.1.5)。- 参数
-
subType
- 假定的子类型 -
superType
- 假定的子类型超类型 - 结果
- 如果可以通过标识转换,扩展基元转换或将引用转换扩展为superType来转换subType,则为true。
-
getPrimitiveTypeByName
public static 类<?> getPrimitiveTypeByName(String name)
给定基本类型的名称将返回表示它的类。 即,当使用“int”调用时,返回Integer.TYPE
。- 参数
-
name
- 基元类型的名称 - 结果
- 表示基本类型的类,如果名称不对应于基本类型,则返回null。
-
getPrimitiveType
public static 类<?> getPrimitiveType(类<?> wrapperType)
当传递表示基本类型的包装器的类时,返回表示相应基元类型的类。 即用Integer.class
调用它将返回Integer.TYPE
。 如果传递的类不是基本类型的包装器,则返回null。- 参数
-
wrapperType
- 表示基本类型的包装器的类对象。 - 结果
- 表示基本类型的类对象,如果传递的类不是基本包装,则返回null。
-
getWrapperType
public static 类<?> getWrapperType(类<?> primitiveType)
传递表示基本类型的类时,返回表示相应包装类型的类。 即用int.class
调用它将返回Integer.class
。 如果传递的类不是基本类型,则返回null。- 参数
-
primitiveType
- 表示基本类型的类对象 - 结果
- 表示包装器类型的类对象,如果传递的类不是基元,则返回null。
-
isWrapperType
public static boolean isWrapperType(类<?> type)
如果传递的类型是基本类型的包装器,则返回true。- 参数
-
type
- 检查的类型 - 结果
- 如果传递的类型是基本类型的包装器,则返回true。
-
-