Spec-Zone.ru › OpenJDK 8

Интерфейс DynAny

Все суперинтерфейсы:
DynAnyOperations, IDLEntity, Object, Serializable
Все известные подинтерфейсы:
DynArray, DynEnum, DynFixed, DynSequence, DynStruct, DynUnion, DynValue, DynValueBox, DynValueCommon
Все известные реализующие классы:
_DynAnyStub, _DynArrayStub, _DynEnumStub, _DynFixedStub, _DynSequenceStub, _DynStructStub, _DynUnionStub, _DynValueStub

public interface DynAny
extends DynAnyOperations, Object, IDLEntity

Любые значения могут быть динамически интерпретированы (пройдены) и построены с помощью объектов 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, связанный со встроенным типом. Для каждого типа построенного типа в IDL (fixed, enum, struct, sequence, union, array, exception и value type) существует отдельный интерфейс, наследующий от интерфейса DynAny.

Построенный объект DynAny экспортирует операции, которые позволяют создавать новые объекты DynAny, каждый из которых связан с компонентом построенного значения данных. Например, DynStruct связан со значением типа struct. Это означает, что DynStruct можно рассматривать как владеющий упорядоченным набором компонентов, по одному для каждого члена структуры. Объект DynStruct экспортирует операции, которые позволяют создавать новые объекты DynAny, каждый из которых связан с членом структуры.

Если объект DynAny был получен из другого (построенного) объекта DynAny, например, DynAny, представляющий член структуры, который был создан из DynStruct, член DynAny логически содержится в DynStruct. Вызов операции insert или get не изменяет текущую позицию. Уничтожение верхнего уровня DynAny (объекта, который не был получен как компонент другого DynAny) также уничтожает любые компонентные объекты DynAny, полученные из него. Уничтожение объекта DynAny не верхнего уровня ничего не делает. Вызов операций на уничтоженном объекте DynAny верхнего уровня или любом из его потомков вызывает исключение OBJECT_NOT_EXIST. Если программист хочет уничтожить объект DynAny, но по-прежнему хочет манипулировать некоторым компонентом значения данных, связанного с ним, то он или она должны сначала создать DynAny для компонента и после этого скопировать созданный объект DynAny.

Поведение объектов DynAny было определено для обеспечения эффективных реализаций с точки зрения выделенной памяти и скорости доступа. Объекты DynAny предназначены для использования для обхода значений, извлеченных из anys, или для построения значений anys во время выполнения. Их использование для других целей не рекомендуется.

Операции insert и get необходимы для работы с базовыми объектами DynAny, но также полезны для работы со встроенными объектами DynAny. Вставка значения базового типа в построенный объект DynAny подразумевает инициализацию текущего компонента построенного значения данных, связанного с объектом DynAny. Например, вызов insert_boolean в DynStruct подразумевает вставку значения данных типа boolean в текущую позицию связанного значения данных типа struct. Тип совместим для вставки или извлечения значения, если его TypeCode эквивалентен TypeCode, содержащемуся в DynAny, или, если у DynAny есть компоненты, эквивалентен TypeCode DynAny в текущей позиции.

Объекты DynAny и DynAnyFactory предназначены для использования в том процессе, в котором они созданы и используются. Это означает, что ссылки на объекты DynAny и DynAnyFactory не могут быть экспортированы в другие процессы или экстернализованы с помощью ORB.object_to_string(). При попытке сделать это нарушающая операция вызовет системное исключение MARSHAL. Поскольку их интерфейсы заданы в IDL, объекты DynAny экспортируют операции, определённые в стандартном интерфейсе org.omg.CORBA.Object. Однако любая попытка вызвать операции, экспортированные через интерфейс Object, может вызвать стандартное исключение NO_IMPLEMENT. Попытка использовать объект DynAny с DII может вызвать исключение NO_IMPLEMENT.

Методы

Методы, унаследованные от интерфейса org.omg.DynamicAny.DynAnyOperations

assign, component_count, copy, current_component, destroy, equal, from_any, get_any, get_boolean, get_char, get_double, get_dyn_any, get_float, get_long, get_longlong, get_octet, get_reference, get_short, get_string, get_typecode, get_ulong, get_ulonglong, get_ushort, get_val, get_wchar, get_wstring, insert_any, insert_boolean, insert_char, insert_double, insert_dyn_any, insert_float, insert_long, insert_longlong, insert_octet, insert_reference, insert_short, insert_string, insert_typecode, insert_ulong, insert_ulonglong, insert_ushort, insert_val, insert_wchar, insert_wstring, next, rewind, seek, to_any, type

Методы, унаследованные от интерфейса org.omg.CORBA.Object

_create_request, _create_request, _duplicate, _get_domain_managers, _get_interface_def, _get_policy, _hash, _is_a, _is_equivalent, _non_existent, _release, _request, _set_policy_override

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API