模块  jdk.dynalink
软件包  jdk.dynalink.beans

Class BeansLinker

  • 实现的所有接口
    GuardingDynamicLinker

    public class BeansLinker
    extends Object
    implements GuardingDynamicLinker
    普通Java对象的链接器。 通常用作DynamicLinkerFactory的最终回退链接器,因此它有机会将调用链接到没有其他链接器识别的所有对象。 具体来说,此链接器将:

    对属性设置器,方法和构造函数自动执行重载方法解析 此外,通过让调用站点为包含显式签名的方法指定名称来支持手动重载方法选择,例如StandardOperation.GET.withNamespace(METHOD).named("parseInt(String,int)")您可以在此类签名中使用非限定类名,而不管这些类的包,它们将匹配任何类具有相同的非限定名称。 您只需使用完全限定的类名,以防非限定类名称会导致选择模糊(这种情况极为罕见)。 构造函数的重载分辨率不是自动的,因为没有逻辑位置来附加该功能,但如果某种语言希望提供此功能,它可以使用getConstructorMethod(Class, String)作为它的有用构建块。

    为方法和构造函数处理变量参数调用

    呼叫者敏感方法可以链接,只要它们是公共的并且链接请求具有呼叫站点描述符携带全强度MethodHandles.Lookup对象而不是弱化查找或公共查找。

    处理缺失成员的行为可以通过将MissingMemberHandlerFactory传递给构造器来自定义

    该类还公开了各种方法,用于在类和类实例上发现可用属性和方法名称,以及使用getLinkerForClass(Class)方法访问每类链接器。

    • 构造方法详细信息

      • BeansLinker

        public BeansLinker()
        创建一个新的bean链接器。 相当于BeansLinker(MissingMemberHandlerFactory)其中null作为缺少的成员处理程序工厂传递,从而导致链接和评估缺少成员的默认行为。
      • BeansLinker

        public BeansLinker​(MissingMemberHandlerFactory missingMemberHandlerFactory)
        使用指定的工厂创建新的bean链接器,以创建缺少的成员处理程序。 如果默认行为足够,则传递的工厂可以为null。 有关详细信息,请参见MissingMemberHandlerFactory
        参数
        missingMemberHandlerFactory - 用于为缺失成员的操作创建处理程序的工厂。
    • 方法详细信息

      • getLinkerForClass

        public TypeBasedGuardingDynamicLinker getLinkerForClass​(<?> clazz)
        返回特定单个类的bean链接器。 当您需要覆盖或扩展语言运行时链接器中某些类的链接行为时,这很有用,但在某些情况下仍希望委托默认行为。
        参数
        clazz - 该课程
        结果
        该类的bean链接器
      • isDynamicMethod

        public static boolean isDynamicMethod​(Object obj)
        如果对象是Java动态方法(例如,通过Java对象或StaticClassgetConstructorMethod(Class, String)上的GET:METHOD操作获得的方法),则返回true。
        参数
        obj - 我们要测试的对象是Java动态方法。
        结果
        如果它是动态方法,则为true,否则为false。
      • isDynamicConstructor

        public static boolean isDynamicConstructor​(Object obj)
        如果对象是Java构造函数(通过 getConstructorMethod(Class, String)获得),则返回true。
        参数
        obj - 我们要作为Java构造函数进行测试的对象。
        结果
        如果是构造函数,则返回true,否则返回false。
      • getConstructorMethod

        public static Object getConstructorMethod​(<?> clazz,
                                                  String signature)
        返回给定类和给定签名的构造函数的动态方法。 此方法对于公开基于显式签名选择重载构造函数的功能非常有用,因为Dynalink不会公开此功能,因为StaticClass对象在没有显式签名选择的情况下充当重载构造函数。 示例用法是: getConstructorMethod(java.awt.Color.class, "int, int, int")
        参数
        clazz - 该课程
        signature - 构造函数的完整签名。 请注意,您如何使用基本类型的名称,数组名以普通Java符号(如"int[]" ),通常你甚至可以使用非限定类名(如"String, List"代替"java.lang.String, java.util.List"只要他们不特定参数的位置引起歧义。
        结果
        构造函数的动态方法,如果不存在具有指定签名的构造函数,则返回null。
      • getReadableInstancePropertyNames

        public static Set<String> getReadableInstancePropertyNames​(<?> clazz)
        返回类的所有可读实例属性的一组名称。
        参数
        clazz - 该课程
        结果
        类的所有可读实例属性的一组名称。
      • getWritableInstancePropertyNames

        public static Set<String> getWritableInstancePropertyNames​(<?> clazz)
        返回类的所有可写实例属性的一组名称。
        参数
        clazz - 该课程
        结果
        类的所有可写实例属性的一组名称。
      • getInstanceMethodNames

        public static Set<String> getInstanceMethodNames​(<?> clazz)
        返回类的所有实例方法的一组名称。
        参数
        clazz - 上课
        结果
        一组类的所有实例方法的名称。
      • getReadableStaticPropertyNames

        public static Set<String> getReadableStaticPropertyNames​(<?> clazz)
        返回类的所有可读静态属性的一组名称。
        参数
        clazz - 该课程
        结果
        一组类的所有可读静态属性的名称。
      • getWritableStaticPropertyNames

        public static Set<String> getWritableStaticPropertyNames​(<?> clazz)
        返回类的所有可写静态属性的一组名称。
        参数
        clazz - 上课
        结果
        一组类的所有可写静态属性的名称。
      • getStaticMethodNames

        public static Set<String> getStaticMethodNames​(<?> clazz)
        返回类的所有静态方法的一组名称。
        参数
        clazz - 上课
        结果
        一组类的所有静态方法的名称。