java - 如何解决不可变字符串[]
java - how to work around immutable String[]
我(想我)明白为什么我在这个方法的 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[]{"", "", "", "", ""};
我(想我)明白为什么我在这个方法的 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[]{"", "", "", "", ""};