我在从SAS声明Java对象时遇到麻烦。无法设置Java对象的参数数组或创建数组的对象。
data _NULL_;
/*With primitive types work well */
declare javaobj jArr("java.util.Arrays");
array primeNum{3} (15, 2, 3);
jArr_rc1=jArr.callStaticVoidMethod("sort", primeNum);
/* For example, try to create array from some javaobjs */
declare javaobj num1("java.lang.Integer","15");
declare javaobj num2("java.lang.Integer","2");
declare javaobj num3("java.lang.Integer","3");
array Num{3} (num1,num2,num3);
/* ERROR: Cannot create an array of objects. */
/* ERROR: DATA STEP Component Object failure. Aborted during the COMPILATION phase. */
/*In my project I've tried different ways: */
/* ...callStaticVoidMethod("FuncFromStandartClass",[num1,num2,num3]); */
/* ...callStaticVoidMethod("FuncFromStandartClass",{num1,num2,num3}); */
/* This code also didn't work*/
/*declare javaobj numArr("java.lang.Integer[]","3","4");*/
run;
Run Code Online (Sandbox Code Playgroud)
我了解,在特定情况下,我必须创建Java包装器代码,该代码将仅通过API原语传递。但这并不总是可能的。并且为您需要的所有Java类编写代码包装程序是无效的。