Можно ли предотвратить передачу Java по значению в методах? - PullRequest
1 голос
/ 01 июля 2010

Java - это язык «передачи по значению», что означает, что отправка переменной в метод, указывающая переменную на новый объект, не влияет на внешнюю переменную.

public void one() {

String s = "one";
two(s);
System.out.println(s);

}

public void two( String s ) {
s = "two";
}

Напишет "один".

Есть ли способ предотвратить это? Или что является наиболее распространенным решением или шаблоном для фактического изменения s на «два» внутри метода?

Ответы [ 11 ]

0 голосов
/ 01 июля 2010

Строки являются неизменяемыми ... в противном случае, все, что вам нужно сделать, это вызвать метод для работы с одним и тем же объектом и заставить его каким-то образом изменить строковое значение.

Я уверен, что есть ряд классов Java, которые сделают эту работу за вас, но вы также можете свернуть свой собственный, просто создав инкапсулирующий класс либо с открытым полем, либо с установщиком / получателем. Пример первого - что-то вроде этого:

public class EncapsulatedString
{
    public String str;

    public EncapsulatedString(String s)
    {
        str = s;
    }
}
...