В школьном тесте я использовал не конечные переменные внутри внутреннего класса анонимного. На компьютере и на моем личном компьютере (с использованием x86 jre1.8.0_45) он работает.Java - Использование не конечных переменных в анонимном внутреннем классе?
Однако на учителях Eclipse для ноутбуков отображаются ошибки (переменные должны использовать final). Он использует версию jre1.8.0.x (не знаю точной версии).
Любые идеи, почему он работает на моем компьютере, а не на его компьютере?
В этом коде примера не конечный объект JLabel используется внутри функции actionPerformed в ActionListener:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
public class Main {
public Main(String[] args) {
JLabel jLabel = new JLabel();
JButton button = new JButton();
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
jLabel.setText("xyz");
}
});
}
}
Звучит странно, должна быть полевая переменная или объявлена окончательной, насколько я могу судить – cYrixmorten
Является ли это предупреждением или ошибкой? –
Возможный дубликат [Java остановил ошибку при неконфигурированных переменных во внутренних классах (java 8)] (http://stackoverflow.com/questions/28408109/java-stopped-erroring-on-non-final-variables-in- inner-classes-java-8) – azurefrog