使用StringBuffer代替弦,它就会解决您的问题。
public static void main(String[] args) {
StringBuffer s = new StringBuffer("Hello");
changeString(s);
String res = s.toString();
//res = "HelloWorld"
}
private static void changeString(StringBuffer s){
s.append("World");
}
或者,如果你真的需要所以这里只使用字符串为解决使用反射:
public static void main(String[] args) {
String s = "Hello";
changeString(s);
String res = s;
//res = "HelloWorld"
}
private static void changeString(String s){
char[] result = (s+"World").toCharArray();
try {
Field field = s.getClass().getDeclaredField("value");
field.setAccessible(true);
field.set(s, result);
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException |
IllegalAccessException e1) {
e1.printStackTrace();
}
}
见http://stackoverflow.com/questions/11164675/mutable-strings-in-java – fdomig 2012-08-12 18:32:03
如果你确实需要在返回void的方法中做到这一点,那么就有一个肮脏的破解。 - > http://blogs.atlassian.com/2008/07/magic_trick_in_java但那通常不是要走的路! – zip 2012-08-12 18:40:08
似乎[请在此输入链接的描述] [1] [1]的副本:http://stackoverflow.com/questions/9183703/passing-a-string-to-a-function – Cyber 2012-08-12 18:50:05