Spec-Zone .ru
спецификации, руководства, описания, API
 Платформа Java™
Стандарт Эд. 7

Пакет org.omg. DynamicAny

Обеспечивает классы и интерфейсы, которые включают обходу значения данных, связанного с any во время выполнения, и экстракцию примитивных составляющих значения данных.

См.: Описание

Пакет org.omg. Описание DynamicAny

Обеспечивает классы и интерфейсы, которые включают обходу значения данных, связанного с any во время выполнения, и экстракцию примитивных составляющих значения данных.

any может быть передан к программе, у которой нет никакой статической информации для типа any (код, сгенерированный для типа компилятором IDL, не был скомпилирован с объектной реализацией). В результате объект, получающий any не имеет переносимого метода использования этого.

DynAnys включают обходу значения данных, связанного с any во время выполнения, и экстракцию примитивных составляющих значения данных. Это особенно полезно для того, чтобы записать мощные универсальные серверы (мосты, фильтрация поддержки каналов события). Точно так же это средство включает конструкции any во время выполнения, не имея статическое знание его типа. Это особенно полезно для того, чтобы записать универсальным клиентам (мосты, браузеры, отладчики, инструменты пользовательского интерфейса).

Any значения могут быть динамически интерпретированы (пересеченные) и созданные через объекты DynAny. Объект DynAny связывается со значением данных, которое соответствует копии значения, вставленного в Any. Объект DynAny может быть просмотрен как упорядоченный набор компонента DynAny s. Для DynAny s представление основного типа, такой как long, или тип без компонентов, таких как пустое исключение, упорядоченный набор компонентов пуст.

Каждый объект DynAny поддерживает понятие текущей позиции в ее набор компонента DynAny s. Текущая позиция идентифицируется индексным значением, которое работает от 0 до n-1, где n является числом компонентов. Специальный индекс оценивает-1, указывает на текущую позицию, которая не указывает нигде. Для значений, у которых не может быть текущей позиции (такой как пустое исключение), индексное значение фиксируется в-1. Если a DynAny инициализируется со значением, у которого есть компоненты, индекс инициализируется к 0. После создания неинициализированного DynAny (то есть, a DynAny у этого нет никакого значения, но a TypeCode это разрешает компоненты), текущая позиция зависит от типа имеющего значение, представленного DynAny. (Текущая позиция устанавливается в 0 или-1, в зависимости от ли новое DynAny получает значения по умолчанию для его компонентов.)

Итеративные операции rewind, seek, и next может использоваться, чтобы изменить текущую позицию и current_component работа возвращает компонент в текущей позиции. component_count работа возвращает число компонентов a DynAny. Все вместе эти операции включают итерации по компонентам a DynAny, например, чтобы (рекурсивно) исследовать его содержание.

Созданный DynAny объект является a DynAny объект связался с созданным типом. Есть различный интерфейс, наследовавшийся от DynAny интерфейс, связанный с каждым видом созданных, вводит IDL (фиксированный, перечисление, struct, последовательность, объединение, массив, исключение, и оцените тип). Созданный DynAny возразите экспортирует операции, которые включают созданию новых DynAny объекты, каждый из них связанный с компонентом созданного значения данных. Как пример, a DynStruct связывается с a struct значение. Это означает что DynStruct может быть замечен как обладание упорядоченного набора компонентов, один для каждого элемента структуры. DynStruct возразите экспортирует операции, которые включают созданию новых DynAny объекты, каждый из них связанный с элементом struct.

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

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

Обработка объектов DynAny

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

Основные операции включают:

DynAny и DynAnyFactory объекты предназначаются, чтобы быть локальными для процесса, в котором они создаются и используются. Это означает это ссылки на DynAny и DynAnyFactory объекты не могут быть экспортированы в другие процессы, или воплощены с ORB.object_to_string(). Если какая-либо попытка будет предпринята, чтобы сделать так, то незаконная работа повысит УПОРЯДОЧИВАТЬ системное исключение. Так как их интерфейсы определяются в IDL, DynAny объекты экспортируют операции, определенные в стандарте org.omg.CORBA.Object интерфейс. Однако, любая попытка вызвать операции, экспортируемые через Object интерфейс может повысить стандартное исключение NO_IMPLEMENT. Попытка использовать a DynAny объект с DII может повысить исключение NO_IMPLEMENT.

Спецификация пакета

Для точного списка поддерживаемых разделов официальных спецификаций, которым Java [ТМ] Платформа, Standard Edition подчиняются 6 ШАРОВ, см. Официальные Спецификации для поддержки CORBA в Java [ТМ] SE 6.

С тех пор:
1.4
 Платформа Java™
Стандарт Эд. 7

Представьте ошибку или функцию
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.