Хорошо, это, наверное, что-то простое, но я просто не могу его получить.Статические поля Java, не работающие с наследованием
package foo.foo.foo;
public class Vars {
public static boolean foo = false;
}
Хорошо, так что это мой класс Vars.
У меня тогда есть JFrame, с JMenuBar, JMenu и JMenuItems.
items = new JCheckBoxMenuItem("Foo");
items.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
AbstractButton ab = (AbstractButton)e.getSource();
Vars.foo = ab.getModel().isSelected();
System.out.println(Vars.foo);
}
});
menu.add(items, 0);
menuBar.add(menu,0);
Все это хорошо, оно возвращает true для println. Теперь это фактическая проблема ... У меня есть оператор if if if(Vars.foo)
Это -хорошо работать, правильно? Он никогда не выполняет код внутри скобок if, ЕСЛИ я не добавляю эту строку кода над ним.
System.out.println(Vars.foo);
Это, естественно, печатает так, то если работает оператор, но если я закомментировать эту строку, она не работает.
Я также прибегая к помощи, и попытался это:
Vars v = null;
if(v.yoo)
Это еще не будет делать это, если я не имею Println, я понятие не имею, почему Println делает его работу. Можете ли вы объяснить, почему и как это работает?
Edit:
public class painthandling implements Runnable {
@Override
public void run() {
Vars y = null;
while(true){
if(y.foo){
//some code here
}
System.out.println(y.foo);
}
}
}
Это та часть, которая не работает, если заявление. всегда возвращает false.
frame f = new frame();
(new Thread(new painthandling())).start();
System.out.print("Got it.");
фрейм часть называется в новой системе отсчета, то другой класс называется там, с классом Vars называется в обеих. в painthandling() оператор if возвращает false, если у него нет println.
Можете ли вы опубликовать код, который, как вы говорите, не работает? –
Где часть наследства вашего вопроса? – NilsH
Как это сейчас? –