Интерфейс DynAnyFactoryOperations
- Все известные дочерние интерфейсы:
- DynAnyFactory
- Все известные реализующие классы:
- _DynAnyFactoryStub
public interface DynAnyFactoryOperations
Объекты DynAny можно создать, вызвав операции объекта DynAnyFactory. Обычно есть только два способа создания объекта DynAny:
- вызов операции на существующем объекте DynAny
- вызов операции на объекте DynAnyFactory
Динамическая интерпретация any обычно включает создание объекта DynAny с использованием create_dyn_any() как первого шага. В зависимости от типа any, ссылка на результирующий объект DynAny может быть сужена до ссылки на объект DynFixed, DynStruct, DynSequence, DynArray, DynUnion, DynEnum или DynValue.
Динамическое создание any включает создание объекта DynAny с использованием create_dyn_any_from_type_code(), передавая TypeCode, связанный со значением, которое нужно создать. Возвращаемая ссылка сужается до одного из сложных типов, например, DynStruct, если это уместно. Затем значение можно инициализировать, вызвав операции на результирующем объекте. Наконец, можно вызвать операцию to_any для создания значения any из созданного DynAny.
Методы
| Модификатор и тип | Метод и описание |
|---|---|
DynAny |
create_dyn_any_from_type_code(TypeCode type) Создаёт DynAny из TypeCode. |
DynAny |
create_dyn_any(Any value) Создаёт новый объект DynAny из значения any. |
Методы
create_dyn_any
DynAny create_dyn_any(Any value)
throws InconsistentTypeCode Создаёт новый объект DynAny из значения any. Копия TypeCode, связанного со значением any, присваивается результирующему объекту DynAny. Значение, связанное с объектом DynAny, является копией значения в исходном any. Текущая позиция созданного DynAny устанавливается в ноль, если переданное значение имеет компоненты, в противном случае в -1.
- Выбрасывает:
-
InconsistentTypeCode- если value имеет TypeCode с TCKind tk_Principal, tk_native или tk_abstract_interface
create_dyn_any_from_type_code
DynAny create_dyn_any_from_type_code(TypeCode type)
throws InconsistentTypeCode Создаёт DynAny из TypeCode. В зависимости от TypeCode, созданный объект может быть типа DynAny или одним из его производных типов, например, DynStruct. Возвращаемая ссылка может быть сужена до производного типа. Во всех случаях DynAny, созданный из TypeCode, имеет начальное значение по умолчанию. Значения по умолчанию для базовых типов:
- false для boolean
- ноль для числовых типов
- ноль для типов octet, char и wchar
- пустая строка для string и wstring
- null для ссылок на объекты
- TypeCode со значением TCKind tk_null для TypeCode
- для значений any — any, содержащая TypeCode со значением TCKind tk_null и без значения
- Для DynSequence устанавливается текущая позиция в -1 и создаётся пустая последовательность.
- Для DynEnum устанавливается текущая позиция в -1 и значение перечислителя устанавливается в первое значение перечислителя, указанное в TypeCode.
- Для DynFixed устанавливается текущая позиция в -1 и значение устанавливается в ноль.
- Для DynStruct устанавливается текущая позиция в -1 для пустых исключений и в ноль для всех других TypeCode. Члены (если таковые имеются) (рекурсивно) инициализируются своими значениями по умолчанию.
- Для DynArray устанавливается текущая позиция в ноль и элементы (рекурсивно) инициализируются своим значением по умолчанию.
- Для DynUnion устанавливается текущая позиция в ноль. Значение дискриминатора устанавливается в значение, согласованное с первым именованным членом объединения. Этот член активируется и (рекурсивно) инициализируется своим значением по умолчанию.
- Для DynValue и DynValueBox инициализируется нулевым значением.
- Выбрасывает:
InconsistentTypeCode
© 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.