Module  jdk.dynalink
软件包  jdk.dynalink.beans

Class StaticClass

  • All Implemented Interfaces:
    Serializable


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

    这个类的对象被BeansLinker识别为特殊的,对它们的操作将与代表的类的静态成员相关联。 "class"合成属性另外被识别并返回Java Class对象,就像Java System.class评估为系统类的Class对象一样。 相反,通过BeansLinker暴露的Class对象暴露"static"合成属性,返回其StaticClass对象(在Java中没有相当于此)。

    总而言之,该类的实例作为静态成员和类作为构造函数的命名空间,与Java语言中指定类名称的方式大致相同,只是在Java中这只是一个句法元素,而在Dynalink中它们被表达作为实际物体。

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

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

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

      • forClass

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

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

        public String toString​()
        说明从类别复制: Object
        返回对象的字符串表示形式。 一般情况下, toString方法返回一个“ toString代表”这个对象的字符串。 结果应该是一个简明扼要的表达,容易让人阅读。 建议所有子类覆盖此方法。

        toString类方法Object返回一个由类的名称,其中所述对象是其实例,该符号字符`的字符串@ ”,并且对象的哈希码的无符号的十六进制表示。 换句话说,这个方法返回一个等于下列值的字符串:

         getClass().getName() + '@' + Integer.toHexString(hashCode())
         
        重写:
        toStringObject
        结果
        对象的字符串表示形式。