Module jdk.dynalink

Class TypeUtilities

java.lang.Object
jdk.dynalink.linker.support.TypeUtilities

public final class TypeUtilities extends Object
用于处理Java类型的各种静态实用方法。
  • Method Details

    • 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仅被视为可转换为void和Object(可以是null或在DynamicLinkerFactory.setAutoConversionStrategy(MethodTypeConversionStrategy)中设置的自定义值)。有点令人费解的是,我们认为任何东西都可以转换为void,即使转换为void会导致数据的最终丢失。另一方面,转换为void基本上意味着该值不重要,应该被丢弃,因此没有保留任何精度的期望。
      参数:
      sourceType - 源类型
      targetType - 目标类型
      返回:
      如果可以进行无损转换,则返回true。
    • 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可以通过标识转换、扩展原始类型转换或扩展引用转换转换为superType,则返回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。