Класс StaticClass
- java.lang.Object
-
- jdk.dynalink.beans.StaticClass
- Все реализованные интерфейсы:
Serializable
public final class StaticClass extends Object implements 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 вычисляет объект Class для класса System. И наоборот, объекты Class, экспонированные через BeansLinker, экспонируют синтетическое свойство "static", которое возвращает их объект StaticClass (аналога этому в Java нет).
Вкратце, экземпляры этого класса действуют как пространства имён для статических членов и как конструкторы для классов, точно так же, как указание имени класса на языке Java, за исключением того, что в Java это просто синтаксический элемент, а в Dynalink они представлены как фактические объекты.
StaticClass объекты, представляющие типы Java массивов, будут действовать как конструкторы, принимающие один целочисленный аргумент и создающие массив заданного размера.
Если класс имеет несколько конструкторов, операция StandardOperation.NEW над StaticClass будет пытаться выбрать наиболее подходящий конструктор. Возможно, вам захочется предоставить механизм в вашем языке для выбора конструктора с явным сигнатурой через BeansLinker.getConstructorMethod(Class, String).
- См. также:
- Сериализованная форма
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
static StaticClass |
forClass(Class<?> clazz) |
Возвращает экземпляр |
Class<?> |
getRepresentedClass() |
Возвращает представленный Java класс. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы
forClass
public static StaticClass forClass(Class<?> clazz)
Возвращает экземпляр StaticClass для указанного класса.
- Параметры:
-
clazz- класс, для которого запрашивается статический фрагмент. - Возвращает:
- экземпляр
StaticClass, представляющий указанный класс.
getRepresentedClass
public Class<?> getRepresentedClass()
Возвращает представленный Java класс.
- Возвращает:
- представленный Java класс.
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/jdk.dynalink/jdk/dynalink/beans/StaticClass.html