首先生成了一个包含EMrun方法的类EpanetMat,其他类可以调用这个类中的方法。public class EpanetMat {
    public Object[] EMrun(){  //这里返回一个Object数组,可以吗?
        Epanet epanetmc = null;
        Object[] result = null;
        try {
            epanetmc = new Epanet();
            result = epanetmc.EpanetRun(2); 
            //EpanetRun方法能得到包含2个Object的Object[],epanetmc是一个jar包中的类
            return result;
        } catch (Exception e) {
            System.out.println("Exception: " + e.toString());
            return null;
        }
        finally {
            if (epanetmc != null) {
                epanetmc.dispose();
            }
        }
    }
}
调用上面EpanetMat类的代码如下:Object[] matresult;
EpanetMat client = new EpanetMat(); 
matresult = client.EMrun();  //这里报错说类型不符

解决方案 »

  1.   

    Object[] result = null 声明的引用不指向任何内存对象。
    Object[] result = new Object[2] 声明的引用指向内存中分配的对象。
      

  2.   

    我将调用函数,和被调函数中的Object数组都定义成new Object[2]了,可还是不行。显示得到的返回值是null;Object[] result = null;
    Object[] matresult;改称
    Object[] result = new Object[2];
    Object[] matresult = new Object[2];
      

  3.   

    我现在把返回类型从Object[]改称List了,可是在调用的函数里居然显示返回的值还是Object[]类型的。
    public class EpanetMat {
        import java.util.List;
        public List EMrun(){  //这里返回一个Object数组,可以吗?
            Epanet epanetmc = null;
            Object[] outputarray;
            List result = null;
            try {
                outputarray = epanetmc.EpanetRun(2);
                result.add(outputarray[0]);
                result.add(outputarray[1]);
                return result;
            } catch (Exception e) {
                System.out.println("Exception: " + e.toString());
                return null;
            }
            finally {
                if (epanetmc != null) {
                    epanetmc.dispose();
                }
            }
        }
    }
      

  4.   

    程序中发生异常后返回了null值,null不能被Object[]类型的变量matresult接收,所以会报出类型不一致的错误。建议修改程序不要返回null值。
      

  5.   

    没发生异常,我看到被调函数生成了2个数组。只不过java好像不能返回2个变量或者object数组。有人知道该怎么办吗?