2012-05-04 3 views
0

Можно создать дубликат:
Is Java pass by reference?Возможно ли передать переменную функции по ссылке?

Мне нужно изменить содержимое переменной, которая передается функции в этой функции.

Тип: String. Я хочу ввести предшествующий символ при использовании функции insertString расширенного класса PlainDocument.

+1

Короткий ответ: ** нет **. Java никогда не передает ничего по ссылке. Он * * пропускает ссылки по значению, но это ** не одно и то же **. –

+1

Также: http://javadude.com/articles/passbyvalue.htm –

+0

хорошо, как я могу изменить строку на лету? – HoNgOuRu

ответ

4

Используйте класс-оболочку:

public class Wrapper 
{ 
    public String text; 
} 

// ... 

public static void changeString(Wrapper w, String newText) 
{ 
    w.text = newText; 
} 

Вы можете использовать его как:

Wrapper w = new Wrapper(); 
w.text = "old text"; 
changeString(w, "new text"); 
System.out.print(w.text); 

ВЫВОД:

новый текст


Также см этот ответ: https://stackoverflow.com/a/9404727/597657

2

Короткий ответ нет, но вы всегда можете «моделировать» указатель с помощью промежуточного объекта.

Смежные вопросы