В Java я могу сохранить переменную от одного метода к другому, и через классы? - PullRequest
0 голосов
/ 01 мая 2011

Можно ли в Java хранить переменную от одного метода к другому и в разных классах?

Я пытаюсь получить переменную из команд, изменить ее в QandA и ожидать, что она сохранится, пока я не изменю ее снова.

    public class Commands
{
   int torch = 1;
}
_____________

public class QandA
{
     Dostuff d = new Dostuff
     Commands a = new Commands();
     public void torch
{
     System.out.println("Torch = " + torch);
     a.torch = 2;
     System.out.println("Torch = " + torch);
     d.dostuff();
}
public class dostuff
{
     public void dostuff()
   {
     // User imput is gathered here etc etc.
    QandA();
   }    

}

Так что я ожидаю, что результат будет (цикл)

Факел = 1

Факел = 2

Факел = 2

Факел = 2

Факел = 2

Факел = 2

После 3 циклов. Но то, что он делает.

Факел = 1

Факел = 2

Факел = 1

Факел = 2

Факел = 1

Факел = 2

После трех циклов.

Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 01 мая 2011

Нет проблем с сохранением данных, однако вы должны знать, где вы их создаете и сохраняете.

В вашем случае вы объявляете «факел» в области видимости класса Command как член команды, инициализированный как «1» (я думаю - синтаксис немного смешной)Поэтому каждый раз, когда вы объявляете «new Command ()», вы начинаете с новой переменной «torch» == 1.

Вы можете объявить «torch» как статический, что означает, что он является общим для всех экземпляров Command,и тогда он будет работать так, как вы хотите, так как он не будет сбрасываться при каждом вызове конструктора (при условии, что вы не устанавливаете его в 1 внутри конструктора).

1 голос
/ 01 мая 2011

Я не уверен, как вы ссылаетесь на класс, такой как dostuff(); и QandA(); [для них должны быть ошибки компиляции], но помните, что нужно создать только один экземпляр Command и передать один и тот же экземпляр.В вашем случае, каждый раз, когда вы создаете экземпляр QandA, создается экземпляр Command с полем torch, установленным в 1

...