Как установить новое значение для публичного int в Java - PullRequest
0 голосов
/ 07 декабря 2011

На языке программирования Java, как установить новое значение для общедоступного целого числа, чтобы внешний метод во внешнем классе мог получить это значение, просто вызвав имя переменной.У меня есть пример кода:

    package build;

    public class Main {

        public static void main(String[] args) {
            Main main = new Main();
            main.init();
        }

        public int myVar = 1;

РЕДАКТИРОВАТЬ:

Более конкретный вопрос: Как я могу получить обновленное значение переменной, а не ее начальное значение, не передав его в метод?

        public void init() {
            Retrieve ret = new Retrieve();
            int i = 0;
            for(int n = 1; n > 0; ++n) {
                myVar = myVar + 1;
                System.out.println("Value: " + myVar);
                i = ret.init();
                System.out.println("Retrieved Value: " + i);
            }
        }

        int getValue()  {
            int b = myVar;
            return b;
        }
    }

и для возврата:

    package build;

    public class Retrieve {

        public int init() {
            Main main = new Main();
            int a = 1;
            a = main.getValue();
            return a;
        }
    }

Как в примере выше установить переменную "myVar" на значение, отличное от единицы, чтобы при вызове 'init'метод в классе return, он возвращает это новое значение, а не 1, начальное значение?

Ответы [ 2 ]

2 голосов
/ 07 декабря 2011

Что-то очень не так с вашими объектными отношениями.

Основная проблема в Retrieve.init ()

public int init() {
        Main main = new Main();
        int a = 1;
        a = main.getValue();

Каждый раз, когда вы вызываете init (), вы создаете новый экземплярof main, поэтому main.myVar будет 1. Я предполагаю, что вы хотите вызвать значение первого main.

public class Retrieve {

    public int init(Main main) {            
        int a = 1;
        a = main.getValue();
        return a;
    }
}

, а в Main.init изменить

Retrieve ret = new Retrieve();

на

Retrieve ret = new Retrieve(this);
1 голос
/ 07 декабря 2011

Это довольно ужасно ООП , но это будет работать:

public class Retrieve {

    public int init() {
        Main main = new Main();
        int a = 1;
        main.myVar = 42;
        a = main.getValue();
        return a; // returns 42
    }
}
...