2016-09-23 5 views
0

У меня есть глобальные переменные в классе вопросов и увеличивает эти значения в обработчике событий. У меня есть другой класс User, который содержит статический метод Details(). Я хочу передать эти две переменные величины (после приращения) из обработчика событий в Details() класса User .:Как передать значения другому методу класса

public class Question { 

    public int phCounter = 0; 
    public int chemCounter = 0; 

    private void CategoryCbActionPerformed(java.awt.event.ActionEvent evt) { 

     phCounter++; 
     chemCounter++; 
    } 
} 

...

public class User { 

    static void Details() { 
     public counter ; 
    } 

} 

Мой вопрос есть ли способ, кроме для отправки значений в качестве аргументов в Details(), в которых я могу вводить эти добавочные значения внутри метода Details().

+0

Java не имеет «глобальные переменные», так что вы не имеете никакой. если вы хотите, чтобы другой класс использовал ваши переменные, передайте их как параметр методу/конструктору – Stultuske

+0

, что такое 'public counter ;'? То, что вы делаете, не ясен для меня, но где 'datatype'' counter'? –

ответ

0

Во-первых: имена методов на Java являются camelCase. Not UpperCase;)

Если вы хотите получить доступ к полям класса в другом классе, есть серверные способы достижения этого. Самый простой статические поля:

public class MyClass { 
    public static String accessible; 
} 

public class AnotherClass { 
    public void someMethod() { 
     // You can set the value ... 
     MyClass.accessible = "New value"; 
    } 

    public void anotherMethod() { 
     // ... and get the value. 
     System.out.println(MyClass.accessible); 
    } 
} 

Но помните: Значение статического поля всегда будет то же самое, если вы не измените, даже при создании новых экземпляров класса, где используется статическое поле. Если возможно, вам следует избегать статических полей. В большинстве случаев вы можете использовать способ ООП для достижения того же результата.

~ Morph

+0

Я отправил значение public int counter конструктору класса User, но мне нужно, чтобы это значение было доступно из всего класса User (например, глобальной переменной). –

+0

Я хочу, чтобы значение счетчика int передавалось в Details() класса User. Но я уже вызвал Details() из класса Question со значениями name и age. поэтому я использовал ранее User.Details (Bob, 30), и теперь я хочу передать значение счетчика также в Details(), но на этот раз мне не нужны аргументы имени и возраста. Я имею в виду один метод класса Question, я назвал Details() с именем и возрастом и из другого метода класса Question Мне нужно передать значение счетчика в Details() –

+0

Если вам действительно нужно получить доступ к полю (переменной класса) через несколько классов, вы можете использовать статическое поле. '' 'java public class MyClass { public static int myVar = 123; } общественный класс AnotherClass { public void doSomething() { System.out.println (MyClass.myVar); } } '' ' – Morph

0

Я могу вводить эти инкрементируется значения внутри детали() метод.

что означает это утверждение?

Ваш код ниже не может быть скомпилирован!

public class User{ 
    static void Details() 
    { 
     public counter; 
    } 
} 

если вы хотите использовать отражение, чтобы отправить арг методу, почему бы просто не назвать User.Details(int a,int b)

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