JavaTM Platform
Standard Ed. 6

org.omg.DynamicAny
인터페이스 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

Any 의 값은, DynAny 객체를 통해 동적으로 해석 (횡단(traverse)) 및 구축할 수 있습니다. DynAny 객체는, any 에 삽입되는 값의 카피에 대응하는 데이터값에 관련지을 수 있습니다.

DynAny 객체는, 컴퍼넌트의 DynAny 의 순서 붙일 수 있었던 컬렉션이라고 볼 수가 있습니다. DynAny 가 long 등의 기본형을 나타내는 경우, 또는 빈 상태(empty)의 예외와 같이 컴퍼넌트가 없는 형태를 나타내는 경우는, 컴퍼넌트의 순서 붙일 수 있었던 컬렉션은 비웁니다. 각각의 DynAny 객체로, 그 DynAny 의 컴퍼넌트의 컬렉션내에 있어서의 현재 위치가 파악됩니다. 현재 위치는, 0 으로부터 n-1 의 인덱스치로 나타납니다 (n 는 컴퍼넌트의 수). -1 그렇다고 하는 특별한 인덱스치도 있어, 이것은 현재 위치가 어디도 지시하지 않은 것을 의미합니다. 현재 위치를 가질 수 없는 값 (빈 상태(empty)의 예외등)의 경우, 인덱스치는 -1 으로 고정됩니다. DynAny 가 컴퍼넌트를 가지는 값으로 초기화되었을 경우, 인덱스도 0 에 초기화됩니다. 초기화되어 있지 않은 DynAny (DynAny 에 값이 없지만, 컴퍼넌트를 가질 수 있는 TypeCode 가 있다)가 작성되었을 경우는, 현재 위치는 DynAny 에 의해 나타내지는 값의 형태에 따라서 달라, 신규 작성된 DynAny 의 컴퍼넌트가 디폴트 값를 가질 수 있을지 어떨지에 의해 0 또는 -1 이 됩니다.

rewind, seek, 및 next 의 반복 조작을 사용하면(자), 현재 위치를 변경할 수 있습니다. current_component 조작은, 현재 위치의 컴퍼넌트를 돌려줍니다. component_count 조작은 DynAny 의 컴퍼넌트의 수를 돌려줍니다. 이러한 조작을 아울러 사용하면(자), 컴퍼넌트의 내용을 (재귀적으로) 조사하는 등, DynAny 의 컴퍼넌트에 대해서 반복 처리를 실시할 수 있습니다.

구축형과 관련지을 수 있었던 DynAny 객체를, 구축형 DynAny 객체라고 합니다. IDL 의 각종 구축형 (fixed, enum, struct, sequence, union, array, exception, 치 형)의 각각 붙어, DynAny 인터페이스로부터 상속된 인터페이스가 있습니다.

구축형 DynAny 객체는, DynAny 객체를 신규 작성하기 위한 조작을 export 합니다. 작성되는 객체는 각각 구축형의 데이터값의 컴퍼넌트에 관련지을 수 있습니다. 예를 들어, DynStruct 는 struct 치와 관련지을 수 있습니다. 즉, DynStruct 는, 구조체의 멤버 마다 컴퍼넌트가 1 개씩 있는 것 같은, 순서 붙일 수 있었던 컬렉션을 소유한다고 볼 수가 있습니다. DynStruct 객체는, struct 의 멤버가 관련지을 수 있는 DynAny 객체를 신규 작성하기 위한 조작을 export 합니다.

다른 (구축형) DynAny 로부터 DynAny 객체를 얻었을 경우, 예를 들어 DynStruct 로부터 작성된, 구조체 멤버를 나타내는 DynAny 는, DynStruct 에 논리적으로 포함되게 됩니다. insert 또는 get 조작을 호출해도, 현재 위치는 변경되지 않습니다. 최상정도의 DynAny 객체 (다른 DynAny 의 컴퍼넌트는 아닌 것)를 파기하면(자), 그 컴퍼넌트의 DynAny 도 파기됩니다. 최상정도가 아닌 DynAny 를 파기했을 경우는 아무것도 일어나지 않습니다. 파기된 최상정도의 DynAny, 또는 그 하위 객체에 대해서 조작을 호출하면(자), OBJECT_NOT_EXIST 가 throw 됩니다. DynAny 를 파기한 뒤도, 거기에 관련지을 수 있는 데이터값의 컴퍼넌트를 조작하려면 , 우선 컴퍼넌트의 DynAny 를 작성하고 나서, 작성한 DynAny 객체의 카피를 작성합니다.

DynAny 객체의 동작은, 할당할 수 있었던 메모리 공간과 액세스 속도에 관해서 효과적인 구현을 실현할 수 있도록(듯이) 정의되고 있습니다. DynAny 객체는, 실행시에 any 로부터 추출된 값의 횡단(traverse)이나, any 의 값의 구축을 실시하기 위해서(때문에) 사용하는 것이 상정되고 있습니다. 다른 용도에서의 사용은 추천할 수 없습니다.

insert 와 get 의 각 조작은, 기본 DynAny 객체의 조작에 필요합니다만, 구축형 DynAny 객체의 조작에도 도움이 됩니다. 구축형 DynAny 객체에 기본 데이터형의 값을 삽입하면(자), DynAny 객체에 관련지을 수 있었던 구축형 데이터값의 현재의 컴퍼넌트를 초기화하게 됩니다. 예를 들어, DynStruct 로 insert_boolean 를 호출하면(자), 관련하는 struct 의 데이터값의 현재 위치에 boolean 의 데이터값가 삽입됩니다. 값의 TypeCode 가 DynAny 에 포함되는 TypeCode 와 같은 경우, 값의 삽입과 추출을 통해 형태는 같게 됩니다. DynAny 에 컴퍼넌트가 있는 경우는, 값의 삽입과 추출에 있어서의 형태는 현재 위치의 DynAny 의 TypeCode 와 같게 됩니다.

DynAny 객체와 DynAnyFactory 객체는, 그것들이 작성 및 사용되는 프로세스에 대해서 로컬이라고 상정되고 있습니다. 즉, DynAny 및 DynAnyFactory 객체에의 참조를 다른 프로세스에 export 하거나 ORB.object_to_string()로 외부화하거나 할 수 없습니다. 실행을 시도하면(자) MARSHAL 시스템 예외가 발생합니다. IDL 에 인터페이스가 지정되고 있기 (위해)때문에, DynAny 객체에서는 표준의 org.omg.CORBA.Object 인터페이스에 정의되고 있는 조작을 export 할 수 있습니다. 다만, Object 인터페이스를 통해 export 한 조작을 호출하려고 하면(자), 표준 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
 


JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.