2016-06-03 3 views
-1

Я знаю, что в Java Integer является неизменным объектом. но мне нужен способ изменить целое число в методе и увидеть изменение вне метода. Например:Изменение целого числа в Java

int getInt(){ 
    int my_int=0; 
    test(my_int); 
} 

void test(int i){ 
    i=3; 
} 

То, что я хочу видеть, как выход из getInt является 3 не 0. Есть ли способ сделать это?

мой метод более сложный, чем то, что я написал, и он вернет другой объект. Вот почему я хочу изменить int во вводе и не возвращать его.

+0

Возможно, это поможет http://stackoverflow.com/a/40523/3981536 –

+0

Еще одна возможность для тех, которые уже заданы: в этом классе может быть переменная-член, а не локальная переменная в методе. К этому можно было получить доступ из любого места, которое вам нужно, и вам не нужно беспокоиться о его прохождении. Я признаю, что это как-то портит остальную часть класса, поэтому я предпочел бы альтернативу - * если * нет такого отдыха, так как единственная цель класса выполняет расчет (и, возможно, даже отброшена впоследствии). Тогда я бы счел это действительным подходом. – Aconcagua

ответ

0

Вы просто не можете. Вам нужно обернуть его в контейнерный объект, который может изменить его содержимое. Например:

class IntWrapper { 
    private int value; 
    .. 
} 

Или вы можете вернуть новое значение и присвоить результат к нему, например,

int x = 10; 
x = foo(x); 

, который в основном соответствует вашему примеру.

+0

Спасибо, мой метод более сложный, чем то, что я написал, и он вернет другой объект. Вот почему я хочу изменить int во входном файле. – Alex

0

Это невозможно, если аргумент должен быть примитивным int. Вы можете использовать AtomicReference<Integer>

AtomicReference<Integer> iRef = new AtomicReference<>(0); 
test(iRef); 

void test(AtomicReference<Integer> ref) { 
    ref.set(3); 
} 

Это честно рода анти-модель - это часто не очень понятно, глядя на сигнатуру метода, что произойдет с вашими ценностями. Было бы лучше, если бы test возвращал int, а затем имел что-то вроде i = test(i);.

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