我的一个方法要返回一个String[][] ,但是变量String[][] MyInvokeStr 的实例化在try里面,并且MyInvokeStr 值也是在try里面写入的。我如何来返回这个MyInvokeStr 呢?它编译的时候老是报错:没有实例化。
代码如下:public String[][]  MyInvokeService(String ServiceType){
String MyInvokeStr[][];
try {    
...
MyInvokeStr = new String[r][c];
        ...

catch (Exception ex) {    ex.printStackTrace();    }
return MyInvokeStr;
}

解决方案 »

  1.   

    public String[][]  MyInvokeService(String ServiceType){
    String MyInvokeStr[][] = null;
    try {    
    ...
    MyInvokeStr = new String[r][c];
    ...

    catch (Exception ex) {    ex.printStackTrace();    }
    return MyInvokeStr;
    }
      

  2.   

    对于数组的初始化
    String MyInvokeStr[][] = null;
    你也可以像下面这样:
    String MyInvokeStr[][] = new String[0][0];看你自己的喜好了,两者没有什么区别,
    只是在你引用该方法获取返回数组后
    上面的方法要判断是否为null
    下面的则不需要。
      

  3.   

    如果你的代码在
    MyInvokeStr = new String[r][c];
    这一句时或者之前抛出异常,则MyInvokerStr没有赋值。
    因此编译return MyInvokerStr的时候检测到变量MyInvokerStr可能没赋值。
    只需要在申明MyInvokerStr的时候初始化一下就好:
    String MyInvokeStr[][] = null;
      

  4.   

    若生成的是一个基本数据类型的数组,则java默认将数组中的每个元素设为0(若为boolean型,则设为false),若声明的是一个对象数组,必须为obj的每个元素赋值,初始化进程才算完成。
    所以String MyInvokeStr[][] = null;即可
      

  5.   

    局部变量申明的时候不做初始化
    不赋值会引起编译错误,不管是对于基本类型还是对象类型推荐代码
    try
    {
       String[][] MyInvokeStr = new String[r][c];
       return MyInvokeStr;
    }
    catch(Exception ex)
    {
       return null;
    }