Пакет org.omg.DynamicAny
Предоставляет классы и интерфейсы, которые позволяют просматривать значение данных, связанное с any, во время выполнения и извлекать примитивные составляющие значения данных.
См.: Описание
| Интерфейс | Описание |
|---|---|
| DynAny | Значения любого типа могут быть динамически интерпретированы (просмотрены) и построены с помощью объектов DynAny. |
| DynAnyFactory | Объекты DynAny могут быть созданы путём вызова операций объекта DynAnyFactory. |
| DynAnyFactoryOperations | Объекты DynAny могут быть созданы путём вызова операций объекта DynAnyFactory. |
| DynAnyOperations | Значения любого типа могут быть динамически интерпретированы (просмотрены) и построены с помощью объектов DynAny. |
| DynArray | Объекты DynArray поддерживают обработку массивов IDL. |
| DynArrayOperations | Объекты DynArray поддерживают обработку массивов IDL. |
| DynEnum | Объекты DynEnum поддерживают обработку перечислений IDL. |
| DynEnumOperations | Объекты DynEnum поддерживают обработку перечислений IDL. |
| DynFixed | Объекты DynFixed поддерживают обработку фиксированных значений IDL. |
| DynFixedOperations | Объекты DynFixed поддерживают обработку фиксированных значений IDL. |
| DynSequence | Объекты DynSequence поддерживают обработку последовательностей IDL. |
| DynSequenceOperations | Объекты DynSequence поддерживают обработку последовательностей IDL. |
| DynStruct | Объекты DynStruct поддерживают обработку структур и исключений IDL. |
| DynStructOperations | Объекты DynStruct поддерживают обработку структур и исключений IDL. |
| DynUnion | Объекты DynUnion поддерживают обработку объединений IDL. |
| DynUnionOperations | Объекты DynUnion поддерживают обработку объединений IDL. |
| DynValue | Объекты DynValue поддерживают обработку типов значений IDL без упаковки. |
| DynValueBox | Объекты DynValueBox поддерживают обработку типов значений IDL с упаковкой. |
| DynValueBoxOperations | Объекты DynValueBox поддерживают обработку типов значений IDL с упаковкой. |
| DynValueCommon | DynValueCommon предоставляет операции, поддерживаемые как интерфейсом DynValue, так и DynValueBox. |
| DynValueCommonOperations | DynValueCommon предоставляет операции, поддерживаемые как интерфейсом DynValue, так и DynValueBox. |
| DynValueOperations | Объекты DynValue поддерживают обработку типов значений IDL без упаковки. |
| Класс | Описание |
|---|---|
| _DynAnyFactoryStub | Объекты DynAny могут быть созданы путём вызова операций объекта DynAnyFactory. |
| _DynAnyStub | Значения любого типа могут быть динамически интерпретированы (просмотрены) и построены с помощью объектов DynAny. |
| _DynArrayStub | Объекты DynArray поддерживают обработку массивов IDL. |
| _DynEnumStub | Объекты DynEnum поддерживают обработку перечислений IDL. |
| _DynFixedStub | Объекты DynFixed поддерживают обработку фиксированных значений IDL. |
| _DynSequenceStub | Объекты DynSequence поддерживают обработку последовательностей IDL. |
| _DynStructStub | Объекты DynStruct поддерживают обработку структур и исключений IDL. |
| _DynUnionStub | Объекты DynUnion поддерживают обработку объединений IDL. |
| _DynValueStub | Объекты DynValue поддерживают обработку типов значений IDL без упаковки. |
| AnySeqHelper | org/omg/DynamicAny/AnySeqHelper.java . |
| DynAnyFactoryHelper | Объекты DynAny могут быть созданы путём вызова операций объекта DynAnyFactory. |
| DynAnyHelper | Значения любого типа могут быть динамически интерпретированы (просмотрены) и построены с помощью объектов DynAny. |
| DynAnySeqHelper | org/omg/DynamicAny/DynAnySeqHelper.java . |
| DynArrayHelper | Объекты DynArray поддерживают обработку массивов IDL. |
| DynEnumHelper | Объекты DynEnum поддерживают обработку перечислений IDL. |
| DynFixedHelper | Объекты DynFixed поддерживают обработку фиксированных значений IDL. |
| DynSequenceHelper | Объекты DynSequence поддерживают обработку последовательностей IDL. |
| DynStructHelper | Объекты DynStruct поддерживают обработку структур и исключений IDL. |
| DynUnionHelper | Объекты DynUnion поддерживают обработку объединений IDL. |
| DynValueHelper | Объекты DynValue поддерживают обработку типов значений IDL без упаковки. |
| FieldNameHelper | org/omg/DynamicAny/FieldNameHelper.java . |
| NameDynAnyPair | org/omg/DynamicAny/NameDynAnyPair.java . |
| NameDynAnyPairHelper | org/omg/DynamicAny/NameDynAnyPairHelper.java . |
| NameDynAnyPairSeqHelper | org/omg/DynamicAny/NameDynAnyPairSeqHelper.java . |
| NameValuePair | org/omg/DynamicAny/NameValuePair.java . |
| NameValuePairHelper | org/omg/DynamicAny/NameValuePairHelper.java . |
| NameValuePairSeqHelper | org/omg/DynamicAny/NameValuePairSeqHelper.java . |
Описание пакета org.omg.DynamicAny
Предоставляет классы и интерфейсы, которые позволяют перемещаться по значению данных, связанному с any во время выполнения, и извлекать примитивные составляющие значения данных.
any может быть передан программе, которая не имеет никакой статической информации о типе any (код, сгенерированный для типа компилятором IDL, не был скомпилирован с объектной реализацией). В результате, объект, получающий any, не имеет портативного метода его использования.
DynAny позволяют перемещаться по значению данных, связанному с any во время выполнения, и извлекать примитивные составляющие значения данных. Это особенно полезно для написания мощных универсальных серверов (мосты, каналы событий с поддержкой фильтрации). Аналогичным образом, эта возможность позволяет создавать any во время выполнения, не имея статических знаний о его типе. Это особенно полезно для написания универсальных клиентов (мосты, браузеры, отладчики, инструменты пользовательского интерфейса).
Значения Any могут быть динамически интерпретированы (обработаны) и созданы с помощью объектов DynAny. Объект DynAny связан со значением данных, которое соответствует копии значения, вставленной в Any. Объект DynAny можно рассматривать как упорядоченное множество компонентных DynAny. Для DynAny , представляющих базовый тип, такой как long, или тип без компонентов, такой как пустое исключение, упорядоченное множество компонентов пусто.
Каждый объект DynAny сохраняет понятие текущей позиции в своем наборе компонентных DynAny. Текущая позиция определяется значением индекса, которое варьируется от 0 до n-1, где n — количество компонентов. Специальное значение индекса -1 указывает текущую позицию, которая никуда не указывает. Для значений, которые не могут иметь текущую позицию (например, пустое исключение), значение индекса фиксируется на -1. Если объект DynAny инициализируется значением, имеющим компоненты, индекс инициализируется значением 0. После создания неинициализированного объекта DynAny (то есть, объекта DynAny, у которого нет значения, но есть объект TypeCode, разрешающий компоненты), текущая позиция зависит от типа значения, представленного DynAny. (Текущая позиция устанавливается в 0 или -1, в зависимости от того, получает ли новый объект DynAny значения по умолчанию для своих компонентов.)
Операции итерации rewind, seek, и next могут быть использованы для изменения текущей позиции, а операция current_component возвращает компонент в текущей позиции. Операция component_count возвращает количество компонентов DynAny. В совокупности эти операции позволяют итерироваться по компонентам DynAny, например, для (рекурсивного) просмотра его содержимого.
Созданный объект DynAny представляет собой объект DynAny , связанный со созданным типом. Существует отдельный интерфейс, наследуемый от интерфейса DynAny, связанный с каждым видом созданного типа в IDL (фиксированный, перечисление, структура, последовательность, объединение, массив, исключение и тип значения). Созданный объект DynAny экспортирует операции, которые позволяют создавать новые объекты DynAny, каждый из которых связан с компонентом созданного значения данных. Например, объект DynStruct связан со значением struct. Это означает, что объект DynStruct может рассматриваться как владелец упорядоченного набора компонентов, по одному для каждого члена структуры. Объект DynStruct экспортирует операции, которые позволяют создавать новые объекты DynAny, каждый из которых связан с членом struct.
Если объект DynAny был получен из другого (созданного) объекта DynAny, например, объекта DynAny, представляющего член структуры, который был создан из объекта DynStruct, член DynAny логически содержится в DynStruct. Вызов операций insert или get оставляет текущую позицию неизменной. Уничтожение верхнего уровня объекта DynAny (объекта, который не был получен в качестве компонента другого объекта DynAny) также уничтожает любые компонентные объекты DynAny , полученные из него. Уничтожение объекта DynAny не верхнего уровня ничего не делает. Вызов операций на уничтоженном объекте верхнего уровня DynAny или любом из его потомков приводит к ошибке OBJECT_NOT_EXIST. Если программист хочет уничтожить объект DynAny, но все еще хочет манипулировать некоторыми компонентами значения данных, связанного с ним, то он или она должны сначала создать объект DynAny для компонента и после этого сделать копию созданного объекта DynAny.
Поведение объектов DynAny было определено для обеспечения эффективной реализации с точки зрения выделенной памяти и скорости доступа. Объекты DynAny предназначены для обработки значений, извлеченных из any или для построения значений any во время выполнения. Их использование для других целей не рекомендуется.
Обработка объектов DynAny
Операции Insert и get необходимы для обработки базовых объектов DynAny, но также полезны для обработки созданных объектов DynAny. Вставка значения базового типа данных в созданный объект DynAny означает инициализацию текущего компонента созданного значения данных, связанного с объектом DynAny. Например, вызов insert_boolean на объекте DynStruct подразумевает вставку значения данных boolean в текущую позицию связанного значения данных struct. Тип считается совместимым для вставки или извлечения значения, если его TypeCode эквивалентен TypeCode, содержащемуся в DynAny или, если у DynAny есть компоненты, эквивалентен TypeCode объекта DynAny в текущей позиции.
Основные операции включают:
- insert_boolean, get_boolean
- insert_char, get_char
- insert_short, get_short
- insert_ushort, get_ushort
- insert_long, get_long
- insert_ulong, get_ulong
- insert_double, get_double
- insert_string, get_string
- insert_reference, get_reference
- insert_typecode, get_typecode
- insert_longlong, get_longlong
- insert_ulonglong, get_ulonglong
- insert_longdouble, get_longdouble
- insert_wchar, get_wchar
- insert_wstring, get_wstring
- insert_any, get_any
- insert_dyn_any, get_dyn_any
- insert_val, get_val
- insert_octet, get_octet
- insert_float, get_float
- get_value
- get_as_string
- get_as_ulong
- get_members
- get_members_as_dyn_any
- get_discriminator
- get_length
- get_elements
- get_elements_as_dyn_any
- get_boxed_value
- get_boxed_value_as_dyn_any
Объекты DynAny и DynAnyFactory предназначены для локального использования в процессе, в котором они созданы и используются. Это означает, что ссылки на объекты DynAny и DynAnyFactory не могут быть экспортированы в другие процессы или внешне с помощью ORB.object_to_string(). Если будет сделана какая-либо попытка сделать это, то нарушающая операция сгенерирует системное исключение MARSHAL. Поскольку их интерфейсы определены в IDL, объекты DynAny экспортируют операции, определенные в стандартном интерфейсе org.omg.CORBA.Object. Однако любая попытка вызвать операции, экспортированные через интерфейс Object, может вызвать стандартное исключение NO_IMPLEMENT. Попытка использовать объект DynAny с DII может вызвать исключение NO_IMPLEMENT.
Спецификация пакета
Для получения точного списка поддерживаемых разделов официальных спецификаций, с которыми соответствует ORB Java[tm] Platform, Standard Edition 6, см. Официальные спецификации для поддержки CORBA в Java[tm] SE 6.
- Since:
- 1.4
© 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.