Sugerencias para pasar matrices para programación de clientes ActiveX
Las matrices son muy similares entre los contenedores Java™ y los de Automation, como Visual Basic y VBScript. En este tema se proporcionan algunos puntos importantes a tener en cuenta cuando se pasan matrices entre estos contenedores.
Los siguientes son algunos puntos importantes a tener en cuenta cuando se pasan matrices entre estos contenedores:
- En las matrices Java no pueden combinarse los tipos. Todas las matrices de Java
contienen un solo tipo, por lo tanto, cuando pase matrices de variantes
(VariantArray) a una matriz Java, debe asegurarse de que todos los elementos de la
matriz de variante sean del mismo tipo. Por ejemplo, en el código 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
- Las matrices de tipos primitivos se convierten utilizando las normas definidas en la conversión de tipos de datos primitivos.
- Las matrices de objetos Java se manejan mediante matrices de objetos JObjectProxy.
- Las matrices de objetos JObjectProxy deben estar completamente inicializadas y ser del tipo Java asociado correcto. Cuando se inicializa una matriz en Visual Basic (por ejemplo, Dim oJavaObjects(1) as Object), se debe establecer cada objeto en un objeto JObjectProxy antes de enviar la matriz a un objeto Java. El puente no puede determinar el tipo de valores de objeto si estos son nulos o vacíos.
- Cuando se recibe una matriz desde un método Java, el enlace inferior siempre es cero. Los métodos Java sólo dan soporte a matrices basadas en ceros.
- En los contenedores de Visual Basic y VBScript, las matrices anidadas o de varias dimensiones siempre se tratan como matrices de varias dimensiones basadas en ceros.
- No hay soporte para matrices no inicializadas ni para tipos de matrices. Cuando se llama a un método Java que toma una matriz de objetos como un parámetro, se debe inicializar completamente la matriz de objetos JObjectProxy.