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

Class StaticClass

  • 实现的所有接口
    Serializable

    public final class StaticClassextends Objectimplements Serializable
    允许访问类的静态成员(其静态方法,属性和字段)以及使用StandardOperation.NEW操作构造实例的对象 在Dynalink中, 对象未被特殊处理并充当普通的Java对象; 您可以使用例如GET:PROPERTY:superclass作为属性getter来调用clazz.getSuperclass() 在另一方面,你不能使用对象访问类的静态成员,也不是为了创建一个使用类的新实例NEW 这与对象在Java中的行为方式一致:在Java中,您编写例如new BitSet()而不是new BitSet.class() 同样,你写System.out而不是System.class.out 这是使用类名作为构造函数和StaticClass体现的静态成员的命名空间的这一方面。

    BeansLinker此类的对象识别为特殊对象,对它们的操作将与所表示的类的静态成员链接。 另外识别"class"合成属性并返回Java 对象,就像在Java System.class评估System类的对象一样。 相反,通过BeansLinker公开的对象公开"static"合成属性,该属性返回其StaticClass对象(Java中没有相应的对象)。

    总之,这个类的实例充当静态成员的名称空间和类的构造函数,就像在Java语言中指定类名一样,除了在Java中这只是一个语法元素,而在Dynalink中它们被表达作为实际对象。

    表示Java数组类型的StaticClass对象将充当构造函数,采用单个int参数并创建指定大小的数组。

    如果该类有多个构造函数, 5199287653827上的StaticClass将尝试选择最具体的适用构造函数。 您可能希望使用您的语言公开一种机制,以通过BeansLinker.getConstructorMethod(Class, String)选择具有显式签名的构造函数

    另请参见:
    Serialized Form
    • 方法详细信息

      • forClass

        public static StaticClass forClass​(<?> clazz)
        检索指定类的StaticClass实例。
        参数
        clazz - 请求静态构面的类。
        结果
        表示指定类的StaticClass实例。
      • getRepresentedClass

        public <?> getRepresentedClass()
        返回表示的Java类。
        结果
        代表的Java类。