2015-06-24 3 views
-4

Поэтому у меня есть два класса:доступ статической переменной из другого класса

Main класс с public static void main(String args[]) методом и Voice класса, который обращается к статической переменной из этого класса.

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

Таким образом, у меня есть статическая переменная в классе Main (который создан/заполнен методом public static void main(String args[]), поэтому этот случай является особым), к которому должен иметь доступ другой класс.

Вот пример того, что происходит:

public class Main(){ 

    public static int variable; 

    /* 
     Unrelated methods go here. 
    */ 
    public static void main(String args[]){ 

     Voice v = new Voice();//This is just here for the code to make sense. 
     variable = 5; 

     v.doSomething(); 

    } 
} 

public class Voice(){ 

    public void doSomething(){ 
     System.out.println(Main.variable); 
    } 

} 

При вызове метода doSomething() в Voice, это приводит к nullPointerException.

я мог бы исправить это, проходя по variable переменной в Voice класса, но есть более простой способ исправить это в долгосрочной перспективе, если, например, мне нужно использовать более одной статической переменной из Main класс?

+0

Не использовать статические переменные. –

+4

Вызывается ли вышеуказанный код? Я не понимаю, как это будет? – sstan

+0

Покажите свой стек и укажите точную строку, которая его вызывает. –

ответ

-1

Вы должны сделать следующее

public class Main{ 

    public static int variable; 

    /* 
     Unrelated methods go here. 
    */ 
    public static void main(String args[]){ 

     Voice v = new Voice();//This is just here for the code to make sense. 
     variable = 5; 

     v.doSomething(); 

    } 
} 

class Voice{ 

    public void doSomething(){ 
     System.out.println(Main.variable); 
    } 

} 
0

Ваш код, имеющий ошибку синтаксиса. Вы можете использовать этот

class Main{ 

    public static int variable; 

    /* 
     Unrelated methods go here. 
    */ 
    public static void main(String args[]){ 

     Voice v = new Voice();//This is just here for the code to make sense. 
     variable = 5; 

     v.doSomething(); 

    } 
} 

class Voice{ 

    public void doSomething(){ 
     System.out.println(Main.variable); 
    } 

} 

Выход будет 5

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