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类。
-