java.lang.Object
jdk.dynalink.beans.StaticClass
- 所有已实现的接口:
Serializable
允许访问类的静态成员(其静态方法、属性和字段)以及使用
StandardOperation.NEW 操作构造实例的对象。在 Dynalink 中,Class 对象并没有被特殊对待,而是作为普通的 Java 对象;您可以使用例如 GET:PROPERTY:superclass 作为属性获取器来调用 clazz.getSuperclass() 。另一方面,您不能使用 Class 对象访问类的静态成员,也不能使用 NEW 创建类的新实例。这与 Class 对象在 Java 中的行为方式一致:在 Java 中,您编写例如 new BitSet() 而不是 new BitSet.class() 。同样,您写的是 System.out 而不是 System.class.out 。 StaticClass 体现的正是使用类名作为构造函数和静态成员命名空间的这一方面。
此类的对象被 BeansLinker 识别为特殊对象,并且对它们的操作将链接到所表示类的静态成员。 "class" 合成属性被额外识别并返回 Java Class 对象,就像在 Java 中 System.class 评估为 System 类的 Class 对象一样。相反,通过 BeansLinker 公开的 Class 对象公开返回其 StaticClass 对象的 "static" 合成属性(在 Java 中没有与此等效的对象)。
总之,这个类的实例充当静态成员的命名空间和类的构造方法,与在 Java 语言中指定类名的方式非常相似,只是在 Java 中这只是一个语法元素,而在 Dynalink 中它们被表达作为实际对象。
StaticClass 表示 Java 数组类型的对象将充当构造函数,采用单个 int 参数并创建指定大小的数组。
如果该类有多个构造函数,StandardOperation.NEW on StaticClass 将尝试选择最具体的适用构造函数。您可能希望在您的语言中公开一种机制,用于通过 BeansLinker.getConstructorMethod(Class, String) 选择具有显式签名的构造函数。
- 参见:
-
方法总结
-
方法详情
-
forClass
检索指定类的StaticClass实例。- 参数:
clazz- 为其请求静态方面的类。- 返回:
-
代表指定类的
StaticClass实例。
-
getRepresentedClass
返回表示的 Java 类。- 返回:
- 表示的 Java 类。
-