java.lang.Object
jdk.dynalink.beans.StaticClass
- 所有已实现的接口:
-
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"合成属性也被识别,并返回JavaClass对象,就像在Java中System.class求值为System类的Class对象一样。相反,通过BeansLinker公开的Class对象公开"static"合成属性,该属性返回它们的StaticClass对象(在Java中没有相应的内容)。
总之,此类的实例充当静态成员的命名空间和类的构造函数,就像在Java语言中指定类名一样,只是在Java中这只是一个语法元素,而在Dynalink中它们被表达为实际对象。
表示Java数组类型的StaticClass对象将充当以单个int参数为参数的构造函数,并创建指定大小的数组。
如果类有多个构造函数,则StaticClass上的StandardOperation.NEW将尝试选择最具体的适用构造函数。您可能希望在您的语言中公开一种机制,通过BeansLinker.getConstructorMethod(Class, String)来选择具有显式签名的构造函数。
- 参见:
-
Method Summary
-
Method Details
-
forClass
检索指定类的StaticClass实例。- 参数:
-
clazz- 请求静态特性的类。 - 返回:
-
表示指定类的
StaticClass实例。
-
getRepresentedClass
返回所代表的Java类。- 返回:
- 表示的Java类。
-