JavaTM Platform
Standard Ed. 6

org.omg.DynamicAny
클래스 DynAnyHelper

java.lang.Object 
  상위를 확장 org.omg.DynamicAny.DynAnyHelper


public abstract class DynAnyHelper
extends Object

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 예외가 발생하는 경우가 있습니다.


생성자 의 개요
DynAnyHelper ()
           
 
메소드의 개요
static DynAny extract (Any  a)
           
static String id ()
           
static void insert (Any  a, DynAny  that)
           
static DynAny narrow (Object  obj)
           
static DynAny read (InputStream  istream)
           
static TypeCode type ()
           
static DynAny unchecked_narrow (Object  obj)
           
static void write (OutputStream  ostream, DynAny  value)
           
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

DynAnyHelper

public DynAnyHelper()
메소드의 상세

insert

public static void insert(Any  a,
                          DynAny  that)

extract

public static DynAny  extract(Any  a)

type

public static TypeCode  type()

id

public static String  id()

read

public static DynAny  read(InputStream  istream)

write

public static void write(OutputStream  ostream,
                         DynAny  value)

narrow

public static DynAny  narrow(Object  obj)

unchecked_narrow

public static DynAny  unchecked_narrow(Object  obj)

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 도 참조해 주세요.