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