Module  jdk.dynalink

Class TypeUtilities



  • public final class TypeUtilities
    extends Object
    用于处理Java类型的各种静态实用程序方法。
    • 方法详细信息

      • 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 (或作为nullDynamicLinkerFactory.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。