如何从SAS Base javaobj语句创建对象的Java数组?

San*_*nik 5 sas

我在从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类编写代码包装程序是无效的。