如何处理不可变字符串[]



我(想我)明白为什么我得到一个编译错误(表达式的非法开始)在tmpString ={",…}行(--> tmpString是不可变的,尽管它与之前的tmpBase行没有问题),但是修复这个问题的最干净的方法是什么-也许是另一个变量类型?谢谢你。

public static ArrayList<String> myMethod(String tmpWord, int tmpNum)
{
    ArrayList<String> tmpReturn = new ArrayList<String>(); 
    String   tmpBase   = tmpWord.substring(0,tmpWord.length()-2);
    String[] tmpString = {"a","a","g","g","ya"};
    switch(tmpNum)
    {
        case  1: tmpBase = "xx";
                 break;
        case  2: tmpBase = "yy";
                 break;
        case  3:
                 break;
        default:
        {
            tmpBase   = "-";
            tmpString = {"","","","",""};
            break;
        }
    }
    for (int j=0; j<5; j++)
        tmpReturn.add( (tmpBase + tmpString[j]) );
    return tmpReturn;
}

这与不可变性无关(数组不是不可变的)。这个语法:

String[] array = { ... };

只能在声明数组变量时使用。

如果你想在数组声明后给它赋一个新值,你需要使用:

tmpString = new String[] {"","","","",""};

直接数组初始化器仅在声明变量时可用。对于以后的赋值,使用限定初始化式:

tmpString = new String[]{"", "", "", "", ""};

最新更新