ActiveX 클라이언트 프로그래밍, 배열 전달을 위한 팁
배열은 Visual Basic과 VBScript와 같이 Java™와 Automation 컨테이너 사이에 매우 유사합니다. 이 주제는 배열을 이 컨테이너 간 앞뒤로 전달할 때 고려할 일부 중요 내용을 제공합니다.
다음은 배열을 이 컨테이너 간 앞뒤로 전달할 때 고려할 일부 중요 내용입니다.
- Java 배열은 유형을 혼합할 수
없습니다. 모든 Java 배열이 단일 유형을 포함하므로,
변형의 배열을 Java 배열로 전달하면
변형 배열의 모든 요소가 동일한 기본 유형인지 확인해야 합니다. 예를 들어, Visual Basic 코드에서 다음과 같습니다.
... Dim VariantArray(1) as Variant VariantArray(0) = CLng(123) VariantArray(1) = CDbl(123.4) oMyJavaObject.foo(VariantArray) ' Illegal! VariantArray(0) = CLng(123) VariantArray(1) = CLng(1234) oMyJavaObject.foo(VariantArray) ' This works
- 기본 유형의 배열은 기본 데이터 유형 변환에서 정의된 규칙을 사용하여 변환됩니다.
- Java 오브젝트의 배열은 JObjectProxy 오브젝트의 배열을 통해 처리됩니다.
- JObjectProxy 오브젝트의 배열은 전체 초기화되며 연관된 올바른 Java 유형이어야 합니다. Visual Basic에서 배열 초기화 시(예: 오브젝트로서 Dim oJavaObjects(1)), 배열을 Java 오브젝트에 보내기 전에 각 오브젝트를 JObjectProxy 오브젝트로 설정해야 합니다. 브릿지는 널 유형 또는 빈 오브젝트 값을 판별할 수 없습니다.
- Java 메소드에서 배열 수신 시, 하한은 항상 0(영)입니다. Java 메소드는 0(영) 기반 배열만을 지원합니다.
- 중첩 또는 다차원 배열은 Visual Basic 및 VBScript 컨테이너에서 0(영) 기반 다차원 배열로 처리됩니다.
- 초기화되지 않은 배열 또는 배열 유형은 지원되지 않습니다. 매개변수로 오브젝트의 배열을 사용하는 Java 메소드 호출 시, JObjectProxy 오브젝트의 배열을 전체 초기화해야 합니다.